解決Redis cluster的jedis驅動在高並發下的擁塞問題

來源:互聯網
上載者:User

標籤:redis cluster jedis 擁塞 耗時間長度

redis cluster發布後我們項目中使用了cluster,使用驅動是jedis,但是在壓力測試過程中發現有一定數量的redis訪問非常緩慢高達幾十秒數分鐘,經過分析jedis驅動JedisClusterInfoCache中加鎖造成

 

private Map<String, JedisPool> nodes = new HashMap<String, JedisPool>();
  private Map<Integer, JedisPool> slots = new HashMap<Integer, JedisPool>();

 

 

public JedisPool getNode(String nodeKey) {
    r.lock();
    try {
      return nodes.get(nodeKey);
    } finally {
      r.unlock();
    }
  }

  public JedisPool getSlotPool(int slot) {
    r.lock();
    try {
      return slots.get(slot);
    } finally {
      r.unlock();
    }
  }

將map替換成ConcurrentHashMap

private Map<String, JedisPool> nodes = new ConcurrentHashMap<String, JedisPool>();
 private Map<Integer, JedisPool> slots = new ConcurrentHashMap<Integer, JedisPool>();

去除鎖

public JedisPool getNode(String nodeKey) {
    return nodes.get(nodeKey);
  }

 public JedisPool getSlotPool(int slot) {
    return slots.get(slot);
  }

 

測試後比較處理比較平穩,未出現某一個訪問耗時非常長得的情況。

 

 

 

 

本文出自 “天涯時空” 部落格,請務必保留此出處http://leshjmail.blog.51cto.com/629172/1784716

解決Redis cluster的jedis驅動在高並發下的擁塞問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.