jedis 基本使用
来源:互联网 发布:淘宝试用申请成功后 编辑:程序博客网 时间:2024/06/03 21:25
环境
java:1.7
jedis: 2.9
基本使用
先去中央仓库把jedis
jar包下载下来。
在多线程环境中使用jedis
你不应该在多线程中使用同一个jedis
实例,因为你将会遇到奇怪的问题。
然后有时创建大量的jedis
实例也是不对的,因为其意味着大量的socket
连接,其也会导致产生奇怪的问题。单个jedis
实例是非线程安全的。为了避免这些问题,你应该使用JedisPool
,其是线程安全的网络连接池。你可以使用这个池去创建几个可靠的jedis
实例,当使用完成后归还到池子中。
可以使用下列代码,初始化一个池子:
JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");
你可以将该池静态存储在某个地方,因为它是线程安全的。
JedisPoolConfig 包含许多Redis-specific
连接池有用的默认值。JedisPool
是基于Commons Pool 2
,你可以参考:
http://commons.apache.org/proper/commons-pool/apidocs/org/apache/commons/pool2/impl/GenericObjectPoolConfig.html 来查看Commons Pool
的配置。
使用方法:
/// Jedis implements Closeable. Hence, the jedis instance will be auto-closed after the last statement.try (Jedis jedis = pool.getResource()) { /// ... do stuff here ... for example 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);}/// ... when closing your application:pool.destroy();
注意
上面用到了
jdk1.7
中的新语法:try with resource
;
这样的好处就是在括号里面的流或者资源,会自动关闭,不需要像下面例子那样在finally
里面关闭。
要使用这个特性需要实现Closeable
接口
如果你不能使用try-with-resource
,你可以使用Jedis.close()
。
Jedis jedis = null;try { jedis = pool.getResource(); /// ... do stuff here ... for example 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(); }}/// ... when closing your application:pool.destroy();
如果jedis
是来自于池子里的,只要确定发生了JedisConnectionException
就会由合适的方法将其归还到池子中。如果jedis
并不是来自于池子中,(发送JedisConnectionException)它将会被断开连接并关闭。
设置主从分配
启用副本
redis主要用于主从的配置。这意味着写请求必须明确发送到主节点,并将更改拷贝到从节点(也是redis
服务器)。读请求可以发送到从节点,这样就减少了主节点的压力。
上面的示例使用的就是master
,为了启用副本,这里有两种方式来告诉从节点其归属哪个主节点。
- 在
redis
服务器的配置文件中的相应部分指定 - 在给定的
jedis
实例上,调用savleOf
方法并传递IP
和port
两个参数。
jedis.slaveOf("localhost", 6379); // if the master is on the same PC which runs your codejedis.slaveOf("192.168.1.35", 6379);
注意
从
redis
2.6版本开始,子节点默认是只读的,所以写请求将会导致错误。
如果你更改了该设置,那么这些从节点就会像正常的redis
服务器一样,并且可以接收写请求,而不会发生错误。但是这些更改不会复制,如果你混合你的jedis
实例,那么这些更改将会有被覆盖的风险。
disable replication / upon failing master, promote a slave
如果你的主节点坏了,你可能想把某个从节点提升为新的主节点。
你应该首先(尝试)禁止离线主节点复制,接着,如果你有多个从服务器,可以从剩余的从服务器中选一个作为新节点。
slave1jedis.slaveofNoOne();slave2jedis.slaveof("192.168.1.36", 6379);
参考地址:
https://github.com/xetorthio/jedis/wiki/Getting-started
- jedis基本使用
- jedis 基本使用
- jedis基本介绍(1)-在多线程下使用Jedis-设置主/从分布
- Jedis使用
- Jedis使用
- Jedis使用
- Jedis使用
- jedis使用
- Jedis使用
- Jedis使用
- jedis使用
- Jedis使用
- jedis使用线程池封装redis基本操作
- jedis使用线程池封装redis基本操作
- java对redis的基本使用(Jedis)
- Jedis使用+jedis再封装
- jedis基本介绍(1)
- jedis基本介绍(2)
- shh -- 中的公玥和私玥
- 关于类中静态块,静态方法,构造代码块,构造方法的执行顺序
- Android Wi-Fi wpa_supplicant AP扫描选择策略
- Android针对时间戳转几时几分昨天前天某年某月某日的显示
- android HttpUrlConnection连接笔记
- jedis 基本使用
- 本地tomcat服务器上的图片显示到jsp
- Android 翻牌动画 实现
- 将PHP数组赋值给JS通过php系统函数json_encode()来实现
- 网络地址转换NAT原理及其作用
- WIN_32与_WIN64
- usaco Barn Repair
- 欢迎使用CSDN-markdown编辑器
- Photon_使用ExecuteReader读取数据库中的数据_003