: :
: serviceImpl : :
Service Public Class JedisClientSingLeservice تنفذ jedisclient {autowired jedispool jedispool ؛ override public string get (string key) {jedis jedis = jedispool.getresource () = jedispool.getResource () ؛ String string = jedis.set (المفتاح ، القيمة) ؛ jedis.close () ؛ string ؛}@Override public string hget (String hkey ، string key) {jedis jedis = jedispool.getResource () ؛ String. HKEY ، مفتاح السلسلة ، قيمة السلسلة) {jedis jedis = jedispool.getResource () ؛ نتيجة طويلة = jedis.hset (hkey ، المفتاح ، القيمة) ؛ jedis.close () ؛ return ؛}@OPTIDE Public Long (key) {jedis jedis = jedispool.getresource () ؛ النتيجة ؛}@Override Public Expire (مفتاح السلسلة ، int الثاني) {jedis jedis = jedispool.getResource () ؛ نتيجة طويلة = jedis.expire (مفتاح ، ثاني) ؛ jedis.close () ؛ jedis.ttl (key) ؛ jedis.close () ؛ return return ؛}@override public long del (مفتاح السلسلة) {jedis jedis = jedispool.getresource () ؛ نتيجة طويلة = jedis.del (مفتاح) ؛ jedis.close () jedispool.getResource () ؛ نتيجة طويلة = jedis.hdel (hkey ، المفتاح) ؛ jedis.close () ؛ نتيجة العودة ؛}: : 添加缓存出 (一般写在 الخدمة 是层中) :
القائمة العامة <Roleresource> getTreeGrid () {// 从缓存中获取内容 حاول {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 () ؛ } قائمة <Roleresource> list = sessionfactory.opensession (). selectlist ("cn.sys.auth.entity.ResourceMapper.getTreeGrid") ؛ // 将缓存中添加缓存 حاول {// redsi 只存字符串 , 把 把 转换换成字符串 转换换成字符串 string cachstring = jsonutils.tojson (list) ؛ jedisclientsingleservice.hset (all_resources_no_condition ، hashid ، cachstring) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } قائمة الإرجاع ؛ }: : 先从缓存中取数据 , 如果缓存中没有 , , 然后把数据存入缓存 , 下次查询时就会从缓存中取。
: : 缓存的同步
问题来了 , 入过你修改或者删除了数据 下次取的时候 下次取的时候 因为缓存中有数据便在缓存中取 , 这是数据库的数据与缓存中的数据不一致 , 便出现差异 , 这就要缓存同步了。
其实很简单 , 就是在修改 , 删除 ()) , : :
1 : 删除缓存 , 处理数据 , 把数据放如缓存
2 : 删除缓存 , 处理数据 (等查询数据的时候会把数据放入缓存 , 两种情况只是写缓存时间的区别)
حاول {jedisclientsingleservice.hdel (all_resources_no_condition ، hashid) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ }总结
以上就是本文关于 javaweb 中使用 redis 缓存实例解析的全部内容 , 希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题 如有不足之处 , , 欢迎留言指出。感谢朋友们对本站的支持!