直接进入主题:
一: ServiceImpl 定义:
@Service คลาสสาธารณะ Jedisclientsingleservice ใช้ jedisclient {@autowired ส่วนตัว Jedispool Jedispool; @Override สตริงสาธารณะรับ (คีย์สตริง) {Jedis Jedis = Jedispool.getResource ()@string)@string) jedis = jedispool.getResource (); สตริงสตริง = jedis.set (คีย์, ค่า); jedis.close (); return string;}@@reverride สตริงสาธารณะ hget (สตริง hkey, สตริงคีย์) {jedis jedis = jedispool.getResource Long HSet (String HKEY, คีย์สตริง, ค่าสตริง) {Jedis Jedis = Jedispool.getResource (); ผลลัพธ์ยาว = jedis.hset (hkey, key, value); jedis.close (); ผลตอบแทน;}@override สาธารณะ jedis.incr (คีย์); jedis.close (); ผลตอบแทน;}@แทนที่การหมดอายุของสาธารณะ (คีย์สตริง, int ที่สอง) {Jedis jedis = Jedispool.getResource (); ผลลัพธ์ยาว = Jedis.expire (คีย์, วินาที); jedispool.getResource (); ผลลัพธ์ยาว = jedis.ttl (คีย์); jedis.close (); ผลตอบแทน;}@แทนที่ลิ้นสาธารณะยาว (คีย์สตริง) {Jedis jedis = jedispool.getResource ()@jedis.del {jedis jedis = jedispool.getResource (); ผลลัพธ์ยาว = jedis.hdel (hkey, key); 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 (exception e) {e.printstacktrace (); } list <roleresource> list = sessionFactory.opensession (). selectList ("cn.sys.auth.entity.resourcesmapper.getTreeGrid"); // 将缓存中添加缓存ลอง {// redsi 只存字符串, 把รายการ转换换成字符串สตริง cachString = jsonutils.tojson (รายการ); jedisclientsingleservice.hset (all_resources_no_condition, hashid, cachstring); } catch (exception e) {e.printstacktrace (); } return list; -逻辑: 先从缓存中取数据, 如果缓存中没有, 就去数据库中取, 然后把数据存入缓存, 下次查询时就会从缓存中取。下次查询时就会从缓存中取。
三: 缓存的同步
问题来了, 入过你修改或者删除了数据, 下次取的时候, 因为缓存中有数据便在缓存中取, 这是数据库的数据与缓存中的数据不一致, 便出现差异, 这就要缓存同步了。这就要缓存同步了。
其实很简单, 就是在修改, 删除(如果添加也需要的话)),::
1: 删除缓存, 处理数据, 把数据放如缓存
2: 删除缓存, 处理数据(等查询数据的时候会把数据放入缓存, 两种情况只是写缓存时间的区别))
ลอง {jedisclientsingleservice.hdel (all_resources_no_condition, hashid); } catch (exception e) {e.printstacktrace (); -总结
以上就是本文关于 Javaweb 中使用 Redis 缓存实例解析的全部内容, 希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题, 如有不足之处, 欢迎留言指出。感谢朋友们对本站的支持! 欢迎留言指出。感谢朋友们对本站的支持!