jedis基本介紹

jopen 12年前發布 | 85K 次閱讀 Java開發 Jedis

原文https://github.com/xetorthio/jedis/wiki/Getting-started

在多線程下使用Jedis

在不同的線程中使用相同的Jedis實例會發生奇怪的錯誤。但是創建太多的實現也不好因為這意味著會建立很多sokcet連接,也會導致奇怪的錯誤發生。單一Jedis實例不是線程安全的。為了避免這些問題,可以使用JedisPool, JedisPool是一個線程安全的網絡連接池。可以用JedisPool創建一些可靠Jedis實例,可以從池中拿到Jedis的實例。這種方式可以解決那些問題并且會實現高效的性能.

初始化JedisPool 

JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");

可以以靜態的方式處理以上代碼,它是線程安全的.

JedisPoolConfig包含了許多有用的redis指定的連接池的默認參數。比如,如果一個連接300秒內沒有任何的返回Jedis將關閉這個連接.

可以這樣使用

Jedis jedis = pool.getResource();
try {
  //隨便做一些對于redis的操作
  jedis.set("foo", "bar");
  String foobar = jedis.get("foo");
  jedis.zadd("sose", 0, "car"); jedis.zadd("sose", 0, "bike"); 
  Set<String> sose = jedis.zrange("sose", 0, -1);
} finally {
  //這里很重要,一旦拿到的jedis實例使用完畢,必須要返還給池中
  pool.returnResource(jedis);
}
//程序關閉時,需要調用關閉方法
pool.destroy();

設置主/從分布

啟用同步復制

Redis主要為了主/從分布而構建。這意味著"write"請求必須要指向"master", "master"會同步復制改變的內容到"slave". "read"請求可以(不是必須的)被指向"slave",緩解"master"的讀寫壓力.

可以按以下的步驟使用"master". 為了啟用同步復制,有兩個方式去告訴"slave"將"slaveOf"到一個給定的"master":

1.在redis server的config文件(redis.conf)指明

2.在拿到的jedis實例中調用"slaveOf"方法并指定IP和端口

jedis.slaveOf("192.168.1.35", 6379); 

注意:"slave"也是一個redis server,也可以接收"write"請求并不會報錯,但是改變不會被同步復制,所以如果弄反了jedis的實例則一些操作會被覆蓋.

禁用同步復制/master失敗后,提升slave

如果"master"down掉,可以提升"slave"成為新的"master".首先試著禁用同步復制離線的"master",如果有幾個"slave",啟用同步復制其余的"slave"到新的"master".

slave1jedis.slaveofNoOne();
slave2jedis.slaveOf("192.168.1.36", 6379); 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!