Spring中集成Redis缓存
来源:互联网 发布:怎么测试网络稳定性 编辑:程序博客网 时间:2024/06/03 16:19
创建一个redis操作的接口,分别创建两个实现类型对应redis的单机版和集群版,根据需要选择单机版或集群版
单机版实现类
public class JedisClientSingle implements JedisClient{ @Autowired private JedisPool jedisPool; @Override public String set(String key, String value) { Jedis jedis = jedisPool.getResource(); String result = jedis.set(key, value); jedis.close(); return result; } @Override public String get(String key) { Jedis jedis = jedisPool.getResource(); String result = jedis.get(key); jedis.close(); return result; } @Override public Long hset(String key, String item, String value) { Jedis jedis = jedisPool.getResource(); Long result = jedis.hset(key, item, value); jedis.close(); return result; } @Override public String hget(String key, String item) { Jedis jedis = jedisPool.getResource(); String result = jedis.hget(key, item); jedis.close(); return result; } @Override public Long incr(String key) { Jedis jedis = jedisPool.getResource(); Long result = jedis.incr(key); jedis.close(); return result; } @Override public Long decr(String key) { Jedis jedis = jedisPool.getResource(); Long result = jedis.decr(key); jedis.close(); return result; } @Override public Long expire(String key, int second) { Jedis jedis = jedisPool.getResource(); Long result = jedis.expire(key, second); jedis.close(); return result; } @Override public Long ttl(String key) { Jedis jedis = jedisPool.getResource(); Long result = jedis.ttl(key); jedis.close(); return result; }}
集群版实现类
public class JedisClientCluster implements JedisClient { @Autowired private JedisCluster jedisCluster; @Override public String set(String key, String value) { return jedisCluster.set(key, value); } @Override public String get(String key) { return jedisCluster.get(key); } @Override public Long hset(String key, String item, String value) { return jedisCluster.hset(key, item, value); } @Override public String hget(String key, String item) { return jedisCluster.hget(key, item); } @Override public Long incr(String key) { return jedisCluster.incr(key); } @Override public Long decr(String key) { return jedisCluster.decr(key); } @Override public Long expire(String key, int second) { return jedisCluster.expire(key, second); } @Override public Long ttl(String key) { return jedisCluster.ttl(key); }}
在Spring配置Redis
<!-- 配置redis客户端单机版 --> <bean id="jedisPool" class="redis.clients.jedis.JedisPool"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="6379"></constructor-arg> </bean> <!-- 配置redis客户端实现类 --> <bean id="jedisClientSingle" class="com.taotao.rest.component.impl.JedisClientSingle"/>
<!-- 配置redis客户端集群版 --> <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"> <constructor-arg> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"/> <constructor-arg name="port" value="7001"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"/> <constructor-arg name="port" value="7002"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"/> <constructor-arg name="port" value="7003"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"/> <constructor-arg name="port" value="7004"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"/> <constructor-arg name="port" value="7005"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"/> <constructor-arg name="port" value="7006"/> </bean> </set> </constructor-arg> </bean> <bean id="jedisClientCluster" class="com.taotao.rest.component.impl.JedisClientCluster"/>
测试
@Test public void testJedisClientSpring() throws Exception { //创建一个spring容器 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml"); //从容器中获得JedisClient对象 JedisClient jedisClient = applicationContext.getBean(JedisClient.class); //jedisClient操作redis jedisClient.set("cliet1", "1000"); String string = jedisClient.get("cliet1"); System.out.println(string); }
业务逻辑添加缓存
@Override public List<TbContent> getContentList(Long cid) { //添加缓存 //查询数据库之前先查询缓存,如果有直接返回 try { //从redis中取缓存数据 String json = jedisClient.hget(REDIS_CONTENT_KEY, cid+""); if (!StringUtils.isBlank(json)) { //把json转换成List List<TbContent> list = JsonUtils.jsonToList(json, TbContent.class); return list; } } catch (Exception e) { e.printStackTrace(); } // 根据cid查询内容列表 TbContentExample example = new TbContentExample(); Criteria criteria = example.createCriteria(); criteria.andCategoryIdEqualTo(cid); //执行查询 List<TbContent> list = contentMapper.selectByExampleWithBLOBs(example); //返回结果之前,向缓存中添加数据 try { //为了规范key可以使用hash //定义一个保存内容的key,hash中每个项就是cid //value是list,需要把list转换成json数据。 jedisClient.hset(REDIS_CONTENT_KEY, cid+"", JsonUtils.objectToJson(list)); } catch (Exception e) { e.printStackTrace(); } return list; }
阅读全文
0 0
- Spring中集成Redis缓存
- Spring集成redis缓存
- Spring集成redis缓存
- Redis-Spring集成与缓存
- Spring集成Redis缓存实现
- Redis 缓存 + Spring 的集成示例
- Redis 缓存 + Spring 的集成示例
- Redis 缓存 + Spring 的集成示例
- Redis 缓存 + Spring 的集成示例
- Redis 缓存 + Spring 的集成示例
- Redis 缓存 + Spring 的集成示例
- Redis 缓存 + Spring 的集成示例
- Redis 缓存 + Spring 的集成示例
- Spring集成Redis实现缓存实践
- Spring Boot集成Redis实现缓存
- Redis 缓存 + Spring 的集成示例
- Redis 缓存 + Spring 的集成示例
- Redis 缓存 + Spring 的集成示例
- linux解压和压缩命令
- 关于cssText的用法总结
- LINUX ACL属性设置 以及
- ubuntu16.04+python3.5安装numpy
- [笔记]ZEMAX中单透镜的设计
- Spring中集成Redis缓存
- 背包问题
- 如何实现浏览器内多个标签页之间的通信?
- java中从一个对象数组中删除元素和判断对象数组存了几个元素的方法
- volatile
- UDP通信在NAT(NAPT/内网穿透)中Session保持实现与效果测试
- 斯坦福大学公开课机器学习课程(Andrew Ng)七最优间隔分类器
- HeadFirst设计模式笔记
- 01.Web基础知识 第二章 Web开发基础知识