1.在高并发的时候使用删除数据库数据在缓存到redis中,被别的线程缓存了造成数据不一致的问题所以用缓存注解
- @Cacheable
- 通常用于查询业务,先去缓存服务器查询,如果有结果直接返回,如果没有,再调用目标方法执行业务,并且将目标方法的返回值重建到缓存中
在这里插入图片描述
先查询了redis发现redis没有于是就查询了数据库,当我点击多次的查询的时候也不在查询数据库了
我们发现在redis中keys是stucache::stulist ,get 获取类似也可以发现是string这说明
value完全序列化到里面了,也就是业务数据
1.2 :我们发现每次都要设置cachenames于是我们就把他设置到类上,这样就不用每个方法都写一遍cachenames ;@Cacheable这个注解的key只能用参数不能用返回值
2 @CachePut
- 标记了该注解的方法,一定会被执行,将方法的返回值重建到缓存中,多用于添加的业务(就是添加的到缓存中,查询就直接在缓存中查)
- (删除单个)@CacheEvict - 表示删除某个缓存,多用于新增、修改、删除的业务
4.删除多个 @Caching - 以上3个注解的数组集合体
5.配置缓存的过期时间
spring:
redis:
host: 192.168.195.188
#配置缓存的过期时间
cache:
redis:
time-to-live: 600000