直接进入主题:
一:serviceimpl定义:
@service public class jedisclientsingleserserviceはjedisclient {@autowired private jedispool jedispool; @override public string get(string key){jedis jedis = jedispool.getResource(); string string = jedis.get(key); jedis.close(); jedis string(); {jedis jedis = jedispool.getresource(); string string = jedis.set(key、value); jedis.close(); return string;}@override public string hget(string hkey、string key){jedis jedis = jedispool.getResource(); string = jedis.heg. string;}@override public long hset(string hkey、string key、string value){jedis jedis = jedispool.getResource(); long result = jedis.hset(hkey、key、value); jedis.close(); return result;}@override public key jedis.incr(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(); jedispool.getResource(); long result = jedis.ttl(key); jedis.close(); return result;}@override public long del(string key){jedis jedis = jedispool.getResource(); long result = jedis.del(key); jedis.close(); jedis.close(); {jedis jedis = jedispool.getResource(); long result = jedis.hdel(hkey、key); jedis.close(); return result;}二:添加缓存出(一般写在サービス是层中):
public list <Roleresource> getTreeGrid(){// try {string cachstring = jedisclientsingleservice.hget(all_resources_no_condition、hashid); if(!stringutils.isblank(cachstring)){list <Roleresource> list = jsonutils.jsonstrtolist(cachstring、roleresource.class);返品リスト。 }} catch(例外e){e.printstacktrace(); } list <Roleresource> list = sessionfactory.opensession()。selectlist( "cn.sys.auth.entity.resourcesmapper.gettreegrid"); // try {// redsi只存字符串、把リスト转换换成字符串文字列cachstring = jsonutils.tojson(list); jedisclientsingleservice.hset(all_resources_no_condition、hashid、cachstring); } catch(Exception e){e.printstacktrace(); }返品リスト。 }逻辑:先从缓存中取数据、如果缓存中没有、就去数据库中取、然后把数据存入缓存、下次查询时就会从缓存中取。
三:缓存的同步
问题来了、入过你修改或者删除了数据、下次取的时候、、因为缓存中有数据便在缓存中取、这是数据库的数据与缓存中的数据不一致、便出现差异、这就要缓存同步了。
其实很简单、就是在修改、删除(如果添加也需要的话)、执行下面操作执行下面操作:
1:删除缓存、处理数据、把数据放如缓存
2:删除缓存、处理数据(等查询数据的时候会把数据放入缓存、两种情况只是写缓存时间的区别)
try {jedisclientsingleservice.hdel(all_resources_no_condition、hashid); } catch(Exception e){e.printstacktrace(); }总结
以上就是本文关于javaweb中使用redis缓存实例解析的全部内容、希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题、如有不足之处、欢迎留言指出。感谢朋友们对本站的支持!