记 RedisTemplate 和 Cacheable 注解

本文探讨了RedisTemplate和@Cacheable注解在操作Redis时的区别,重点介绍了@Cacheable如何自动处理缓存逻辑,提升效率,并讨论了其缓存机制与时间限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  最近一直在找关于 redisTemplate 和 redisCache等一系列注解的区别。奈何没有找到。所以自己写了demo试下

  首先,单从操作Redis来说,我觉得两者并没有什么区别。但是 redisCache 从单词就可以看出。这个是缓存效果。即不经过任何的关系型和非关系型数据库。

   先是 redisTemplate 操作redis,当redis中没有当前的key时,查找sql插入redis返回的时间

   

   当再次执行查找操作,由于redis中已经存储了当前键的信息,不需要再去数据库执行查找操作,所以时间很快

    

   我们比较下 @Cacheable 注解所带来的效果。

   同样的第一次redis中是没有数据的,所以执行了redis的添加操作。

可以看到有一行红字 “获取数据并放入缓存“,这是我在执行sql之前所打印的。查询加插入sql耗时31毫秒

当再次执行该接口时,连打印的那行红字都没有了。这就是注解的效果。通过注解直接跳过方法从缓存中取出数据。

当我们清空redis中的数据的时候。直接用redisTemplate操作redis是读取不到刚才的数据的。但是如果用 @Cacheable 注解我们还是能拿到刚才插入的数据,这点有点类似于mybaits的缓存机制。

但是启用 @Cacheable 注解要注意,如果redis中没有数据的情况下,必须在设定的时间范围内才可以拿到放到缓存中的数据,超过了这个时间也是无效的。

类似于 redisCache(查找,没有就新增) 的注解还有 @cacheEvict(删除缓存中以及redis中的数据),@CachePut(更新缓存和redis的数据).

相比 redisTemplate 。注解的优势更在于省去了逻辑判断的代码。比如以前操作 redisTemplate 时候需要先从redis里查询有没有该值,没有就新增,有就直接拿出来。而注解相当于帮我们做了这一部分的逻辑判断。

附:这是我个人的见解。。。如有分析错误请多多包涵。

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值