zoukankan      html  css  js  c++  java
  • SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

    SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

    来源:https://www.toutiao.com/a6803168397090619908/?timestamp=1584450221&app=news_article_lite&group_id=6803168397090619908&req_id=202003172103410100150440391024E2BA

    死牛胖子 2020-03-12 12:07:56
    SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

     

    相关知识

    常用 Spring Cache 缓存注解

    • @CacheConfig 在类上设置当前缓存的一些公共设置,比如缓存名称。
    • @Cacheable 作用在方法上,表明该方法的结果可以缓存,如果缓存存在,则目标方法不会被调用,直接从缓存中获取,如果缓存不存在,则执行方法体,并将结果存入缓存。
    • @CacheEvice 作用在方法上,删除缓存项或者清空缓存。
    • @CachePut 作用在方法上,不管缓存是否存在,都会执行方法体,并将结果存入缓存。
    • @Caching 作用在方法上,以上的注解如果需要同时注解多个,可以包在 @Caching 内

    目标

    使用 Redis 作为缓存,实现对数据库进行增删改时,同步更新数据至缓存,查询时优先从缓存中查找。

    准备工作

    创建表

    SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

     

    操作步骤

    添加依赖

    引入 Spring Boot Starter 父工程

    SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

     

    添加 redis、jpa 及 mysql 的依赖,添加后的整体依赖如下

    SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

     

    配置

    数据源、Redis、缓存进行配置。

    • spring.cache.type 配置缓存类型,默认为 simple,配置使用 redis 作为缓存中间件,只需要配置 spring.cache.type 属性为 redis 即可
    SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

     

    编码

    实体对象

    因为 Redis 初始化时,默认使用的序列化类是 JdkSerializationRedisSerializer,所以需要实体对象实现 Serializable 接口。

    SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

     

    Repository 层代码

    SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

     

    Service 层代码

    对增删查改方法添加缓存注解

    SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

     

    启动类

    在启动类上添加 @EnableCaching 注解,用于开启缓存

    SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

     

    验证结果

    编写测试用例

    SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

     

    将 UserService 中的缓存相关注解全部注释,执行测试用例,日志显示如下:

    SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

     

    恢复缓存注解,再次执行测试用例,日志显示如下:

    SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

     

    可以看到,使用缓存之后,根据用户ID获取用户数据时,并不执行SQL。

    去到 Redis 进行查看,可以看到当前的 Redis Key 为 user::12,其中 12 为用户的 ID

    源码地址

    本章源码 : https://gitee.com/gongm_24/spring-boot-tutorial.git

    结束语

    数据库一直都是系统高性能的一个瓶颈,合理正确地使用缓存,可以大大提升系统性能。

    但是随之而来的是系统复杂度提高,有更多的问题需要处理,比如缓存一致性,缓存穿透,缓存雪崩等。

  • 相关阅读:
    02 树莓派的远程连接
    01 树莓派系统安装
    Python正课110 —— Django入门
    作业7 答案
    作业8
    作业7
    作业6
    文件操作
    字符编码
    基本数据类型之集合
  • 原文地址:https://www.cnblogs.com/zouhao/p/12515222.html
Copyright © 2011-2022 走看看