:
一 : ServiceImpl 定义:
@Service Public Class JedisctifientsingleService implémente Jedisclient {@Autowired privé jedispool jedispool; @Override public String get (String key) {jedis jedis = jedispool.getReSource (); return string;} @ overde = jedispool.getResource (); String String = jedis.set (key, valeur); jedis.close (); return String;} @ Override public String hget (String hke Hkey, clé de chaîne, valeur de chaîne) {Jedis jedis = jedispool.getResource (); long résultat = jedis.hset (hkey, key, valeur); jedis.close (); return result;} @ override public infr (string key) {jedis jedis = jedispool.getResource (); long résultat = jedis.incr (key); jeds.close;); Résultat;} @ Override public Long Expire (String Key, int Second) {Jedis Jedis = jedispool.getResource (); long résultat = jedis.expire (key, second); jedis.close (); Retour Result;} @ override public long ttl (string key) {jedis jedis = jedisool.getResource (); long résultat = long résultat = long » jedis.ttl (key); jedis.close (); return result;} @ override public long del (string key) {Jedis jedis = jedispool.getResource (); result long = jedis.del (key); jedis.close (); return result;} @ override public long hdel (String hkey, string key) {jedis jedis = override public hdel (String hke jedispool.getResource (); long résultat = jedis.hdel (hkey, key); jedis.close (); résultat de retour;}二 : 添加缓存出 (一般写在 Service 是层中) :
public List <RoleResource> getTreegrid () {// 从缓存中获取内容 try {String cachString = jedisclientSingleService.hget (all_resources_no_condition, hashid); if (! StringUtils.isblank (cachString)) {list <roleResource> list = jsonUtils.jsontrtolist (cachString, roleResource.class); Liste de retour; }} catch (exception e) {e.printStackTrace (); } List <roleResource> list = sessionfactory.opencession (). SelectList ("cn.sys.auth.entity.resourcesmapper.getTreegrid"); // 将缓存中添加缓存 essayez {// redsi 只存字符串 , 把 list 转换换成字符串 String cachString = jsonUtils.tojson (list); JedisclientSingleService.hset (all_resources_no_condition, hashid, cachstring); } catch (exception e) {e.printStackTrace (); } Retour List; }逻辑: 先从缓存中取数据 , 如果缓存中没有 , 就去数据库中取 , 然后把数据存入缓存 , 下次查询时就会从缓存中取。
三 : 缓存的同步
问题来了 , 入过你修改或者删除了数据 , 下次取的时候 , 因为缓存中有数据便在缓存中取 , 这是数据库的数据与缓存中的数据不一致 , 便出现差异 , 这就要缓存同步了。
其实很简单 , 就是在修改 , 删除 (如果添加也需要的话)) : :
1: 删除缓存 , 处理数据 , 把数据放如缓存
2: 删除缓存 , 处理数据 (等查询数据的时候会把数据放入缓存 , 两种情况只是写缓存时间的区别 两种情况只是写缓存时间的区别)
essayez {jedisclientingleService.hdel (all_resources_no_condition, hashid); } catch (exception e) {e.printStackTrace (); }总结
以上就是本文关于 Javaweb 中使用 redis 缓存实例解析的全部内容 , 希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题 , 如有不足之处 , 欢迎留言指出。感谢朋友们对本站的支持!