直接进入主题 :
一 : ServiceImpl 定义 :
@Service Public Class JedisclientsinleService implementiert Jedisclient {@autowired Private Jedispool Jedispool; @Override public String get (String Key) {Jedis jedis = jedispool.getResource (); String = Jedis.get (Schlüssel); 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.hget (hkey, key, key); Hset (String Hkey, String Key, String Value) {jedis jedis = jedispool.getResource (); langes Ergebnis = jedis.hset (hKey, key, value); jedis.close (); return -result;}@overide öffentlich inkretiert (String Key) {Jedis jedis = jedispool.getresource (); jedis.incr (key); jedis.close (); Rückgabeergebnis;}@override public long leuchten (String -Schlüssel, int zweiter) {jedis jedis = jedispool.getResource (); langes Ergebnis = jedis.expire (Schlüssel); Jedis.close (); jedispool.getResource (); langes Ergebnis = jedis.ttl (key); jedis.close (); return Ergebnis;}@override public del (String key) {jedis jedis = jedispool.getResource (); long ergebnis = jedis.del (taste); {Jedis jedis = jedispool.getResource (); langes Ergebnis = jedis.hdel (hKey, key); jedis.close (); Rückgabeergebnis;}二 : : Service 是层中) :
public list <Roleresource> getTreegrid () {// 从缓存中获取内容 try {String cachstring = jedisclientService.hget (All_Resources_NO_Condition, Hashid); if (! Stringutils.isblank (cachstring)) {list <Roleresource> list = jsonutils.jonstrtolist (Cachstring, Roleresource.class); Rückgabeliste; }} catch (Ausnahme e) {e.printstacktrace (); } List <Roleresource> list = sessionFactory.OpenSession (). SELECTLIST ("cn.sys.auth.entity.resourcesMapper.GetTreeGrid"); // 将缓存中添加缓存 try {// redsi 只存字符串 , 把 list 转换换成字符串 String cachstring = jsonutils.tojson (Liste); JedisclientsingleService.hset (All_Resources_NO_Condition, Hashid, Cachstring); } catch (Ausnahme e) {e.printstacktrace (); } Rückgabeliste; }逻辑 : 先从缓存中取数据 , 如果缓存中没有 , 就去数据库中取 , 然后把数据存入缓存 , 下次查询时就会从缓存中取。 下次查询时就会从缓存中取。
三 : 缓存的同步
问题来了 , 入过你修改或者删除了数据 , 下次取的时候 , 因为缓存中有数据便在缓存中取 , 这是数据库的数据与缓存中的数据不一致 , 便出现差异 , 这就要缓存同步了。 这就要缓存同步了。
其实很简单 , 就是在修改 , 删除(如果添加也需要的话) , : :
1: 删除缓存 , 处理数据 , 把数据放如缓存
2 : 删除缓存 , 处理数据(等查询数据的时候会把数据放入缓存 , 两种情况只是写缓存时间的区别) 两种情况只是写缓存时间的区别)
try {jedisclientsingleService.hdel (All_resources_no_condition, Hashid); } catch (Ausnahme e) {e.printstacktrace (); }总结
以上就是本文关于 Javaweb 中使用 Redis 缓存实例解析的全部内容 , 希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题 , 如有不足之处 , 欢迎留言指出。感谢朋友们对本站的支持! 欢迎留言指出。感谢朋友们对本站的支持!