社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
最近一直在找关于 redisTemplate 和 redisCache等一系列注解的区别。奈何没有找到。所以自己写了demo试下
首先,单从操作Redis来说,我觉得两者并没有什么区别。但是 redisCache 从单词就可以看出。这个是缓存效果。即不经过任何的关系型和非关系型数据库。
先是 redisTemplate 操作redis,当redis中没有当前的key时,查找sql插入redis返回的时间
当再次执行查找操作,由于redis中已经存储了当前键的信息,不需要再去数据库执行查找操作,所以时间很快
我们比较下 @redisCache 注解所带来的效果。
同样的第一次redis中是没有数据的,所以执行了redis的添加操作。
可以看到有一行红字 “获取数据并放入缓存“,这是我在执行sql之前所打印的。查询加插入sql耗时31毫秒
当再次执行该接口时,连打印的那行红字都没有了。这就是注解的效果。通过注解直接跳过方法从缓存中取出数据。
当我们清空redis中的数据的时候。直接用redisTemplate操作redis是读取不到刚才的数据的。但是如果用 @redisCache 注解我们还是能拿到刚才插入的数据,这点有点类似于mybaits的缓存机制。
但是启用 @redisCache 注解要注意,如果redis中没有数据的情况下,必须在设定的时间范围内才可以拿到放到缓存中的数据,超过了这个时间也是无效的。
类似于 redisCache(查找,没有就新增) 的注解还有 @cacheEvict(删除缓存中以及redis中的数据),@CachePut(更新缓存和redis的数据).
相比 redisTemplate 。注解的优势更在于省去了逻辑判断的代码。比如以前操作 redisTemplate 时候需要先从redis里查询有没有该值,没有就新增,有就直接拿出来。而注解相当于帮我们做了这一部分的逻辑判断。
附:这是我个人的见解。。。如有分析错误请多多包涵。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!