redis缓存的应用---注解方式

redis缓存的应用—注解方式

加redis配置和依赖
在这里插入图片描述

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

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

在这里插入图片描述

查看maven依赖关系

在这里插入图片描述

ctrl+F 查找依赖

在这里插入图片描述

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

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

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

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

在这里插入图片描述

启动项目访问

在这里插入图片描述

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

解决方法

ResultVO继承Serializable接口
在这里插入图片描述

自动生成 serialVersionUID 的设置

使用idea自动生成serialVersionUID
在这里插入图片描述

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

数据
在这里插入图片描述

redis
在这里插入图片描述

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

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

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

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

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

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

如下图返回的是同一个商品信息:
在这里插入图片描述
关于key,如果不填或者为空,那么默认key为方法的参数,

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

在这里插入图片描述
简写:把cachNames属性提到类名上面
在这里插入图片描述

@Cacheable注解的其他参数

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

unless的意思是如果不,所以想表示Code=0进行缓存,需要 用 != 0
在这里插入图片描述

总结:

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

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

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

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

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

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

发布了23 篇原创文章 · 获赞 3 · 访问量 597

猜你喜欢

转载自blog.csdn.net/qq_25292419/article/details/104583852