1. 程式人生 > >多執行緒環境中使用redis

多執行緒環境中使用redis

不能在不同的執行緒中使用同一個例項,因為你將會有奇怪的錯誤。有時建立多個jedis的例項也不是很好,因為也會發生奇怪的錯誤。一個jedis例項執行緒不安全。為了避免上述奇怪的錯誤,你應該使用jedisPool,它是網路連線執行緒安全池。你可以使用pool靜態的建立幾個jedis例項,這種方式可以克服那些奇怪的錯誤而收穫巨大的效能。

為了使用它,初始化一個pool:

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

You use it by:

你可以這麼使用:

try(Jedis jedis=pool.getResource()){

    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);

}

pool.destroy();

如果你不能使用try-with-resource,你可以使用:

Jedis jedis=null;

try{

   jedis=pool.getResource();

    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{

      if(jedis != null){

          jedis.close();

      }

}

pool.destroy();

設定主/從分佈

為了保證可複製

redis首選要建立主從分佈。這就意味著寫請求明確的知道主伺服器的地址,

jedis.
slaveOf("localhost", 6379); // if the master is on the same PC which runs your code jedis.slaveOf("192.168.1.35", 6379);

disable replication / upon failing master, promote a slave

In case your master goes down, you may want to promote a slave to be the new master. You should first (try to) disable replication of the offline master first, then, in case you have several slaves, enable replication of the remaining slaves to the new master:

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