对jedis 的一个封装,主要提供两种功能
- 支持四种连接池配置:JedisPool/JedisSentinelPool/ShardedJedisPool/ShardedJedisSentinelPool
- redis 相关操作不需要手动 获取连接 释放连接
<dependency>
<groupId>com.cacheproxy.client</groupId>
<artifactId>redisclient</artifactId>
<version>0.0.1</version>
</dependency>
不管哪种连接池,该配置都支持 org.apache.commons.pool2.impl.GenericObjectPoolConfig(http://commons.apache.org/proper/commons-pool/api-2.4.2/index.html) 的所有属性
host=127.0.0.1
port=6379
database=2
timeout=4000
password=aabbccddeeffgg
clientName=dubbo-user
maxTotal=10
maxIdle=5
master=user-master
sentinels=10.10.10.1:26379,10.10.10.2:26379,10.10.10.3:26379
database=2
timeout=4000
password=aabbccddeeffgg
clientName=dubbo-user
maxTotal=10
maxIdle=5
shards=host:10.10.200.1,port:6379,timeout:2000,weight:1;host:10.10.10.2,port:6379,timeout:2000,weight:2
maxTotal=10
maxIdle=5
masters=user-master1,user-master2
sentinels=10.10.10.1:26379,10.10.10.2:26379,10.10.10.3:26379
database=2
timeout=4000
password=aabbccddeeffgg
maxTotal=10
maxIdle=5
@Test
public void testJedisProxy() {
// 可以将 此 jedisProxy 作为静态变量
// 默认从 redisclient.properties 加载配置,也可以自定义配置文件名称 JedisProxyFactory.createJedisProxy("my-redis.properties");
JedisProxy jedisProxy = JedisProxyFactory.createJedisProxy();
jedisProxy.set("cookie", "hello");
Assert.assertEquals("hello", jedisProxy.get("cookie"));
}
@Test
public void testShardJedisProxy(){
// 可以将 此 proxy 作为静态变量
// 默认从 redisclient.properties 加载配置,也可以自定义配置文件名称 JedisProxyFactory.createShardedJedisProxy("my-redis.properties");
ShardedJedisProxy proxy = JedisProxyFactory.createShardedJedisProxy();
proxy.set("cookie", "girl");
Assert.assertEquals("girl", proxy.get("cookie"));
}
说明:以事务操作为例子,虽然开始事务时获取连接,关闭事务时释放连接,但是如果发生异常使得关闭事务得不到执行,则连接就不会得到释放,所以需要手动加上try finally 模块
@Test
public void testJedisProxyPipeline() {
// 可以将 此 jedisProxy 作为静态变量
// 默认从 redisclient.properties 加载配置,也可以自定义配置文件名称 JedisProxyFactory.createJedisProxy("my-redis.properties");
JedisProxy jedisProxy = JedisProxyFactory.createJedisProxy();
Pipeline pi = jedisProxy.pipelined();
try {
pi.set("cookie", "helloboy");
pi.get("cookie");
System.out.println(pi.syncAndReturnAll());
} catch (Exception e) {
// TODO: handle exception
}finally{
ReleaseUtil.realease(pi);
}
}
@Test
public void testTr(){
// 可以将 此 jedisProxy 作为静态变量
// 默认从 redisclient.properties 加载配置,也可以自定义配置文件名称 JedisProxyFactory.createJedisProxy("my-redis.properties");
JedisProxy jedisProxy = JedisProxyFactory.createJedisProxy();
Transaction tt = null;
try {
tt = jedisProxy.multi();
tt.set("cookie", "10000");
tt.exec();
} finally{
ReleaseUtil.realease(tt);
}
}