Redis--Jedis的使用
来源:互联网 发布:mac 查看硬盘内存 编辑:程序博客网 时间:2024/05/20 14:23
1. jedis的测试代码
public class RedisClient { @Test //使用Jedis连接redis服务器 public void jedisClient(){ Jedis jedis = new Jedis("192.168.83.128",6379); jedis.set("s3", "333"); String result = jedis.get("s3"); System.out.println(result); jedis.close(); } @Test //使用JedisPool连接redis服务器 public void jedisPool(){ JedisPool pool = new JedisPool("192.168.83.128",6379); Jedis jedis = pool.getResource(); String result = jedis.get("s1"); System.out.println(result); jedis.close(); pool.close(); } @Test public void jedisPool_Spring(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); JedisPool jedisPool = context.getBean("jedisPool", JedisPool.class); Jedis jedis = jedisPool.getResource(); jedis.set("s1", "111"); String result = jedis.get("s1"); System.out.println(result); jedis.close(); jedisPool.close(); } @Test public void jedisCluster(){ Set<HostAndPort> nodes = new HashSet(); nodes.add(new HostAndPort("192.168.83.128",7001)); nodes.add(new HostAndPort("192.168.83.128",7002)); nodes.add(new HostAndPort("192.168.83.128",7003)); nodes.add(new HostAndPort("192.168.83.128",7004)); nodes.add(new HostAndPort("192.168.83.128",7005)); nodes.add(new HostAndPort("192.168.83.128",7006)); JedisCluster cluster = new JedisCluster(nodes); cluster.set("ss","123"); String result = cluster.get("ss"); System.out.println(result); cluster.close(); }}
2. Spring整合Jedis
2.1 整合JedisPool
<!-- 连接池配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- 最大连接数 --> <property name="maxTotal" value="30" /> <!-- 最大空闲连接数 --> <property name="maxIdle" value="10" /> <!-- 每次释放连接的最大数目 --> <property name="numTestsPerEvictionRun" value="1024" /> <!-- 释放连接的扫描间隔(毫秒) --> <property name="timeBetweenEvictionRunsMillis" value="30000" /> <!-- 连接最小空闲时间 --> <property name="minEvictableIdleTimeMillis" value="1800000" /> <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 --> <property name="softMinEvictableIdleTimeMillis" value="10000" /> <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 --> <property name="maxWaitMillis" value="1500" /> <!-- 在获取连接的时候检查有效性, 默认false --> <property name="testOnBorrow" value="false" /> <!-- 在空闲时检查有效性, 默认false --> <property name="testWhileIdle" value="true" /> <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true --> <property name="blockWhenExhausted" value="false" /> </bean> <!-- redis单机 通过连接池 --> <bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="close"> <constructor-arg name="poolConfig" ref="jedisPoolConfig" /> <constructor-arg name="host" value="192.168.242.130" /> <constructor-arg name="port" value="6379" /> </bean>
2.2 整合JedisCluster
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"> <constructor-arg index="0"> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="192.168.101.3"></constructor-arg> <constructor-arg index="1" value="7001"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="192.168.101.3"></constructor-arg> <constructor-arg index="1" value="7002"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="192.168.101.3"></constructor-arg> <constructor-arg index="1" value="7003"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="192.168.101.3"></constructor-arg> <constructor-arg index="1" value="7004"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="192.168.101.3"></constructor-arg> <constructor-arg index="1" value="7005"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="192.168.101.3"></constructor-arg> <constructor-arg index="1" value="7006"></constructor-arg> </bean> </set> </constructor-arg> <constructor-arg index="1" ref="jedisPoolConfig"></constructor-arg></bean>
3技巧
step1.将Jedis中通用的方法抽取到一个接口中
public interface JedisClient { public String set(String key, String value); public String get(String key); public Long hset(String key, String item, String value); public String hget(String key, String item); public Long incr(String key); public Long decr(String key); public Long expire(String key, int second); public Long ttl(String key); public Long hdel(String key,String item);}
step2.使用JedisPool去实现这个接口
public class JedisClientSingle implements JedisClient{ @Autowired private JedisPool jedisPool; @Override public String set(String key, String value) { Jedis jedis = jedisPool.getResource(); String string = jedis.set(key, value); jedis.close(); return string; } public String get(String key) { Jedis jedis = jedisPool.getResource(); String string = jedis.get(key); jedis.close(); return string; } @Override public Long hset(String key, String item, String value) { Jedis jedis = jedisPool.getResource(); Long hset = jedis.hset(key, item, value); jedis.close(); return hset; } @Override public String hget(String key, String item) { Jedis jedis = jedisPool.getResource(); String hget = jedis.hget(key, item); jedis.close(); return hget; } public Long hdel(String key,String item){ Jedis jedis = jedisPool.getResource(); Long hdel = jedis.hdel(key, item); jedis.close(); return hdel; } @Override public Long incr(String key) { Jedis jedis = jedisPool.getResource(); Long incr = jedis.incr(key); jedis.close(); return incr; } @Override public Long decr(String key) { Jedis jedis = jedisPool.getResource(); Long decr = jedis.decr(key); jedis.close(); return decr; } @Override public Long expire(String key, int second) { Jedis jedis = jedisPool.getResource(); Long expire = jedis.expire(key, second); jedis.close(); return expire; } @Override public Long ttl(String key) { Jedis jedis = jedisPool.getResource(); Long ttl = jedis.ttl(key); jedis.close(); return ttl; }}
step3.用JedisCluster去实现这个接口
public class JedisClientCluster implements JedisClient { @Autowired private JedisCluster jedisCluster; @Override public String set(String key, String value) { String set = jedisCluster.set(key, value); return set; } @Override public String get(String key) { String string = jedisCluster.get(key); return string; } @Override public Long hset(String key, String item, String value) { Long hset = jedisCluster.hset(key, item, value); return hset; } @Override public String hget(String key, String item) { String hget = jedisCluster.hget(key, item); return hget; } @Override public Long hdel(String key, String item) { Long hdel = jedisCluster.hdel(key, item); return hdel; } @Override public Long incr(String key) { Long incr = jedisCluster.incr(key); return incr; } @Override public Long decr(String key) { Long decr = jedisCluster.decr(key); return decr; } @Override public Long expire(String key, int second) { Long expire = jedisCluster.expire(key, second); return expire; } @Override public Long ttl(String key) { Long ttl = jedisCluster.ttl(key); return ttl; }}
<bean id="jedisClient" class="com.taotao.order.dao.JedisClientSingle"></bean>
<bean id="jedisClient" class="com.taotao.order.dao.JedisClientCluster"></bean>
</beans>
使用时,两个Bean二选一即可。
上述过程可以体现了JedisClient 接口多态性。即无需改变JedisClientAPI的使用情况,可通过配置Bean的方式随意切换单个redis和redis集群的使用。
阅读全文
0 0
- Redis--Jedis的使用
- redis客户端--Jedis的使用
- 【Redis深入】Jedis的使用
- Redis 客户端 Jedis的使用
- redis 客户端 jedis的使用
- jedis使用:redis常用元素的使用!
- Redis的java客户端Jedis的使用
- redis客户端jedis的简单使用
- 使用jedis访问redis的sentinel
- redis的Java客户端jedis使用示例
- 使用Redis的Java客户端Jedis
- 使用Redis的Java客户端Jedis
- 使用Jedis无法访问Redis的问题
- 使用Redis的Java客户端Jedis
- 使用Redis的Java客户端Jedis
- Jedis对于Redis的使用(一)
- 使用Redis的Java客户端Jedis
- Redis客户端之jedis的使用简介
- 关于tomcat打开空白页的问题
- Androidstudio3.0 关于Gradle报错的问题
- 对象存储对比
- ubuntu17.04安装tftp服务完整
- 147. Insertion Sort List
- Redis--Jedis的使用
- Linux服务器时间设置及同步
- 新手创建Heroku账户
- Jquery表单插件使用
- 从网站结构到链接
- ubuntu->linux下命令积累
- 异常之_自定义异常
- webservice的发布技术不同,客户端调用程序也不一样,从发布的wsdl文档,怎么判断webservice是哪种方式发布的?
- 阿里云香港搭shadowsocks服务的坑