SpringBoot使用@Cacheable实现最简单的Redis缓存
前言
之前我们使用过RedisTemplate来实现redis缓存,然后使用工具类来实现操作redis的存储。这样的方式好处是很自由,但是还不是最简单的处理方式。对于一些简单的应用来说,其实redis的缓存应用很简单,只需要存储和取出就可以了。
于是Spring提供了@Cacheable注解来实现,非常easy
操作步骤
1、启动类上需要加@EnableCaching注解
2、在需要执行缓存的类上面写上缓存前缀名称
@CacheConfig(cacheNames="user")
3、在查询方法上使用@Cacheable(key = "'list'")配置键的名称
4、在修改方法上使用@CachePut(key = "'list'")配置键的名称
然后就可以了?对,就可以了。
当调用查询方法的时候,首先就会去redis里面看是否有相应的对象,如果有就直接从缓存中取,不会走下面的查询方法,如果没有就会进行查询并将查询后的数据存放到redis中。
整体代码
https://github.com/LinkinStars/springBootTemplate
具体缓存方法在UserCacheServiceImpl中

测试步骤
第一次调用查询
http://127.0.0.1:8080/cache/user/list
就会在控制台中看到相应输出“调用了方法,没有从redis取”
第二次调用查询,就会发现控制台没有相应输出了,证明是直接从缓存中获取的数据。
调用添加方法会操作缓存进行更新
http://127.0.0.1:8080/cache/user/add
调用删除方法,因为没有添加CachePut注解所以缓存数据并不会更新
http://127.0.0.1:8080/cache/user/delete
使用查询之后数据还是原来的数据并没有改变
注意事项
1、需要缓存的对象必须可以被序列化
2、查询和修改返回的对象一定要相同,否则会报错。
3、cacheNames可以配置在Cacheable和CachePut中,配置在CacheConfig中更加方便。
4、key可以根据入参和EL表达式来设置如:key="#user.id"
5、Cacheable中condition参数可以设置当满足一定条件之后才会使用缓存
总结
1、这个缓存写法用法非常简单,用起来很舒服,不需要什么很复杂的配置
2、如果你只是缓存一些小东西,不需要对缓存进行一些特殊操作,比如缓存一些首页广告信息等等,那还是很方便的。
3、如果你需要对你的缓存进行很复杂的控制,缓存一些商品具体信息,并且还需要对缓存设置过期时间等等,那么这样的方式就不能很好的满足了,还是老老实实使用RedisTemplate来做吧。
其他用法可以参考:https://www.baeldung.com/spring-cache-tutorial
相关文章
- 利用gearman同步mysql数据到redis
- Redis(十七)-SpringBoot集成Redis
- Redis(二十)-Redis的事务和锁机制
- Redis(二十八)-简单一文了解SpringBoot与Redis的整合(哨兵模式)
- Redis 事件循环函数serverCron
- SpringBoot整合Spring Data JPA以及集成Redis
- springboot:redis缓存使用前缀
- SpringBoot 整合redis ,使用配置文件设置参数方式
- 为什么redis是单线程的以及为什么这么快?
- Linux下php安装Redis扩展
- redis:(error) NOAUTH Authentication required
- 产品使用的前后台框架API-dubbo-redis-elasticsearch-jquery
- redis官方网站及文档
- SpringBoot之Redis访问(spring-boot-starter-data-redis)
- springboot中使用spring-session实现共享会话到redis(二)
- springboot之使用redistemplate优雅地操作redis
- 【bitmap】Redis数据结构bitmap
- springboot+redis 含 多个redis数据源切换实现
- SpringBoot整合redis(yml版)
- 2021-09-26 redis-cluster心跳
- 2022-03-15 关于redis-operator的一些需求摘要
- 比Redis快5倍的中间件,为啥这么快?
- 使用Redis实现延时任务(二)
- springboot使用redis(从配置到实战)
- .NET客户端实现Redis中的管道(PipeLine)与事物(Transactions)
- Redis专题之12、第12篇:Redis应用问题解决(缓存穿透、击穿、雪崩、分布式锁)
- C# Redis 缓存应用 主要代码及版本选择
- 玩转redis-延时消息队列
- SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】
- springboot+redis+虚拟机 springboot连接linux虚拟机中的redis服务
- Redis6入门到实战------ 五、Redis的发布和订阅
- Linux安装Redis单机版
- 【SpringBoot系列】七、SpringBoot 中使用Redis缓存