redis缓存的应用—注解方式

加redis配置和依赖

RedissonClient 如何注入 redis注解使用_RedissonClient 如何注入

redis:
    host: 127.0.0.1
    port: 6379
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

启动类加注解@EnableCaching (依雷波咔寻)

RedissonClient 如何注入 redis注解使用_spring_02

查看maven依赖关系

RedissonClient 如何注入 redis注解使用_缓存_03

ctrl+F 查找依赖

RedissonClient 如何注入 redis注解使用_RedissonClient 如何注入_04

项目中已经有了这个依赖所以我们不需要引入。如果项目中没有的需要引入下面的依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>

买家商品列表加上缓存注解 @Cacheable

@Cacheable(cacheNames = "product",key = "123")

RedissonClient 如何注入 redis注解使用_spring_05

启动项目访问

RedissonClient 如何注入 redis注解使用_spring_06

注意:报错原因是ResultVO没有序列化

解决方法

ResultVO继承Serializable接口

RedissonClient 如何注入 redis注解使用_spring_07

自动生成 serialVersionUID 的设置

使用idea自动生成serialVersionUID

RedissonClient 如何注入 redis注解使用_RedissonClient 如何注入_08

完成后继续访问接口已经有数据了,并且也缓存进了redis,下一次查询就不再访问接口而是直接从redis中拿数据

数据

RedissonClient 如何注入 redis注解使用_redis_09

redis

RedissonClient 如何注入 redis注解使用_RedissonClient 如何注入_10

如何保证缓存和数据库同步

更新商品或增加商品接口加注解

方法一: @CacheEvict 注解,表示更新或增加商品时删除缓存

@CacheEvict(cacheNames = "product", key = "123")

方式二:@CachePut注解,表示更新或增加商品时同步缓存(使用时需要注意返回的对象必须和查询时返回的对象一致)

重点:使用@CachePut注解时需要注意返回的对象必须和查询时返回的对象一致
@CachePut(cacheNames = "product",key = "123")

如下图返回的是同一个商品信息:

RedissonClient 如何注入 redis注解使用_RedissonClient 如何注入_11


关于key,如果不填或者为空,那么默认key为方法的参数,

如果保存和查询key不同将影响缓存的同步

RedissonClient 如何注入 redis注解使用_缓存_12


简写:把cachNames属性提到类名上面

RedissonClient 如何注入 redis注解使用_spring_13

@Cacheable注解的其他参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PhmjcXU3-1582985788279)(项目优化.assets/1578580903100.png)]

unless的意思是如果不,所以想表示Code=0进行缓存,需要 用 != 0

RedissonClient 如何注入 redis注解使用_redis_14

总结:

记住三个注解:@EnableCaching 、@Cacheable、@CacheEvict 、@CachePut

@EnableCaching (读音:依雷波咔寻)启动类加EnableCaching 注解 表示启用缓存

@Cacheable (读音:开k耳跛) 缓存注解

保证缓存和数据库同步的注解:

@CacheEvict(读音:咔西内特) :表示更新或增加商品时删除缓存

@CachePut(读音: 咔西瀑特):表示更新或增加商品时同步缓存(使用时需要注意返回的对象必须和查询时返回的对象一致)