多线程环境中使用redis
2015-08-06 22:20
501 查看
不能在不同的线程中使用同一个实例,因为你将会有奇怪的错误。有时创建多个jedis的实例也不是很好,因为也会发生奇怪的错误。一个jedis实例线程不安全。为了避免上述奇怪的错误,你应该使用jedisPool,它是网络连接线程安全池。你可以使用pool静态的创建几个jedis实例,这种方式可以克服那些奇怪的错误而收获巨大的性能。
为了使用它,初始化一个pool:
JedisPool pool=new JedisPool(new JedisPoolConfig(),"localhost");
JedisPoolConfig包含很多有用的Redis-specific默认连接。JedisPool是基于Commons Pool 2,所以你也许想看看Commons Pool's 配置。Please see
http://commons.apache.org/proper/commons-pool/apidocs/org/apache/commons/pool2/impl/GenericObjectPoolConfig.html for more details.
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首选要建立主从分布。这就意味着写请求明确的知道主服务器的地址,
[/code]
为了使用它,初始化一个pool:
JedisPool pool=new JedisPool(new JedisPoolConfig(),"localhost");
JedisPoolConfig包含很多有用的Redis-specific默认连接。JedisPool是基于Commons Pool 2,所以你也许想看看Commons Pool's 配置。Please see
http://commons.apache.org/proper/commons-pool/apidocs/org/apache/commons/pool2/impl/GenericObjectPoolConfig.html for more details.
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: [code]slave1jedis.slaveofNoOne(); slave2jedis.slaveOf("192.168.1.36", 6379);
[/code]
相关文章推荐
- Redis本机主从关联
- Redis快速入门
- redis功能丰富
- C#中使用Redis学习二 在.NET4.5中使用redis hash操作
- 在c#中使用servicestackredis操作redis
- Redis数据库的学习与实践—Redis的常用命令及高级应用
- java使用Redis7--分布式存储并实现sentinel主从自动切换
- Redis介绍及常用命令
- Redis集群主备模式部署
- java使用Redis6--sentinel单点故障主从自动切换
- Redis缓存应用之Java
- java使用Redis5--分布式存储
- java使用Redis4--主从复制
- Redis3 集群功能配置初尝
- redis的一些坑
- java使用Redis3--完整模板类
- java使用Redis2--保存对象
- Redis系列-远程连接redis
- [转]redis设计思想
- 【Redis】windows下安装redis及PHP安装php-redis扩展(.dll)