日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

多线程下使用Jedis

發(fā)布時(shí)間:2025/4/16 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多线程下使用Jedis 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  在不同的線(xiàn)程中使用相同的Jedis實(shí)例會(huì)發(fā)生奇怪的錯(cuò)誤。

  但是創(chuàng)建太多的實(shí)現(xiàn)也不好因?yàn)檫@意味著會(huì)建立很多sokcet連接,也會(huì)導(dǎo)致奇怪的錯(cuò)誤發(fā)生。

  單一Jedis實(shí)例不是線(xiàn)程安全的。

  為了避免這些問(wèn)題,可以使用JedisPool, JedisPool是一個(gè)線(xiàn)程安全的網(wǎng)絡(luò)連接池。可以用JedisPool創(chuàng)建一些可靠Jedis實(shí)例,可以從池中拿到Jedis的實(shí)例。這種方式可以解決那些問(wèn)題并且會(huì)實(shí)現(xiàn)高效的性能。


【初始化JedisPool】
  JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");
可以以靜態(tài)的方式處理以上代碼,它是線(xiàn)程安全的。


JedisPoolConfig包含了許多有用的redis指定的連接池的默認(rèn)參數(shù)。比如,如果一個(gè)連接300秒內(nèi)沒(méi)有任何的返回Jedis將關(guān)閉這個(gè)連接。


01 Jedis jedis = pool.getResource();
02 try {
03 //隨便做一些對(duì)于redis的操作
04 jedis.set("foo", "bar");
05 String foobar = jedis.get("foo");
06 jedis.zadd("sose", 0, "car"); jedis.zadd("sose", 0, "bike");
07 Set<String> sose = jedis.zrange("sose", 0, -1);
08 } finally {
09 //這里很重要,一旦拿到的jedis實(shí)例使用完畢,必須要返還給池中
10 pool.returnResource(jedis);
11 }
12 //程序關(guān)閉時(shí),需要調(diào)用關(guān)閉方法
13 pool.destroy();


【設(shè)置主/從分布】
啟用同步復(fù)制
Redis主要為了主/從分布而構(gòu)建。這意味著"write"請(qǐng)求必須要指向"master", "master"會(huì)同步復(fù)制改變的內(nèi)容到"slave". "read"請(qǐng)求可以(不是必須的)被指向"slave",緩解"master"的讀寫(xiě)壓力.
可以按以下的步驟使用"master". 為了啟用同步復(fù)制,有兩個(gè)方式去告訴"slave"將"slaveOf"到一個(gè)給定的"master":
1.在redis server的config文件(redis.conf)指明
2.在拿到的jedis實(shí)例中調(diào)用"slaveOf"方法并指定IP和端口


1 jedis.slaveOf("192.168.1.35", 6379);
注意:"slave"也是一個(gè)redis server,也可以接收"write"請(qǐng)求并不會(huì)報(bào)錯(cuò),但是改變不會(huì)被同步復(fù)制,所以如果弄反了jedis的實(shí)例則一些操作會(huì)被覆蓋.


禁用同步復(fù)制/master失敗后,提升slave
如果"master"down掉,可以提升"slave"成為新的"master".首先試著禁用同步復(fù)制離線(xiàn)的"master",如果有幾個(gè)"slave",啟用同步復(fù)制其余的"slave"到新的"master".
1 slave1jedis.slaveofNoOne();
2 slave2jedis.slaveOf("192.168.1.36", 6379);

轉(zhuǎn)載于:https://www.cnblogs.com/lsx1993/p/4632978.html

總結(jié)

以上是生活随笔為你收集整理的多线程下使用Jedis的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。