直接进入主题 :
: : ServiceImpl 定义 :
@Service Public Class JEdIsClientSingleService implementa JEDISCLIENT {@AUTOWIRED Private JEdispool JEdispool; @Override public String get (key de cadena) {jEdis jEdis = jedispool.getResource (); string string = jedis.get (key); jedis.close (); return string;}@overvide stet (stet string, string {key) {key) jEdis = jedispool.getResource (); string string = jedis.set (key, valor); jedis.close (); return string;}@anular public String hget (string hkey, key) {jEdis jEdis = jedisPool.getResource (); string String = jEdis.hkey (HKEY); HSET (String Hkey, clave de cadena, valor de cadena) {JEDIS JEDIS = JEDISPOOL.GETRESOURCE (); Long result = JEDIS.HSET (HKEY, KEY, VALOR); JEDIS.CLOSE (); RETURN;}@anular public Long Incrus (String Key) {Jedis Jedis = jedispool.getResource (); Resultado largo = jedis.incr (clave); jedis.close (); return resultado;}@anular public Long expire (clave de cadena, int segundo) {JEDIS JEDIS = JEDISPOOL.GETRESOURCE (); Long Result = JEdis.EXPIRE (KEY, SEGUNDO); JEDIS.CLOSE (); Return Result;}@ovide público Long Ttl (String Key) {Jedis Jedis Jedis Jedis = jedispool.getResource (); larga resultado = jEdis.ttl (clave); jedis.close (); return resultado;}@anulación public Long del (clave de cadena) {jedis jedis = jedispool.getResource (); long resultado = jedis.del (clave); jedis.close (); return resultado;}@overide pública pública pública hdel (string hey, string, string key); Key); jedis.close (); {JEDIS JEDIS = JEDISPOOL.GETRESOURCE (); Long result = JEDIS.HDEL (HKEY, KEY); JEDIS.CLOSE (); Resultado de retorno;}二 : 添加缓存出(一般写在 Servicio 是层中) :
Lista pública <RolerSource> getTreegrid () {// 从缓存中获取内容 try {String CachString = JedIsClientSingleService.hget (all_resources_no_condition, hashid); if (! StringUtils.isblank (Cachstring)) {list <RolereSource> list = jsonutils.jsonstrtolist (Cachstring, roleresource.class); lista de devolución; }} catch (Exception e) {E.PrintStackTrace (); } List <RolereSource> list = sessionFactory.opensession (). SelectList ("cn.sys.auth.entity.resourcesmapper.gettreegrid"); // 将缓存中添加缓存 Prueba {// Redsi 只存字符串 , 把 List 转换换成字符串 String CachString = jsonutils.tojson (lista); jedisclientsingleservice.hset (all_resources_no_condition, hashid, cachstring); } catch (Exception e) {E.PrintStackTrace (); } Lista de retorno; }逻辑 : 先从缓存中取数据 , 如果缓存中没有 就去数据库中取 , 然后把数据存入缓存 下次查询时就会从缓存中取。 下次查询时就会从缓存中取。
三 : 缓存的同步
问题来了 , 入过你修改或者删除了数据 , 下次取的时候 因为缓存中有数据便在缓存中取 , 这是数据库的数据与缓存中的数据不一致 , 便出现差异 这就要缓存同步了。
其实很简单 , 就是在修改 删除(如果添加也需要的话) 删除(如果添加也需要的话) 执行下面操作 :
1 : 删除缓存 , 处理数据 把数据放如缓存
2 : 删除缓存 , 处理数据(等查询数据的时候会把数据放入缓存 两种情况只是写缓存时间的区别)
Pruebe {jedisclientsingleService.hdel (all_resources_no_condition, hashid); } catch (Exception e) {E.PrintStackTrace (); }总结
以上就是本文关于 Javaweb 中使用 Redis 缓存实例解析的全部内容 , 希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题 如有不足之处 , 欢迎留言指出。感谢朋友们对本站的支持!