技术收藏-开发篇实战案例-优化系列

基于redisson+spring cache+caffeine

2020-03-21  本文已影响0人  510_C

技术介绍

实现功能

1.缓存对象到到应用本地缓存和redis中,读取的时候先通过应用本地缓存,若没有再去redis,同时再进行一次缓存到应用本地缓存
2.修改一个应用服务内的缓存,同时对其他机器(集群应用)内的本地缓存进行同步更新,采用redis消息通知实现
3.对应用本地缓存级别缓存设置超时机制,保证数据在网络波动的情况下实现对象缓存数据的最终一致性
4.基于反射实现注解形式的缓存读取,解决spring cache只能在注解上输入纯字符串,当修改一处缓存名称时候,其他的地方得不到同步修改

请求图解

未命名文件.jpg

项目依赖

      <!-- springboot 配置相关-->
       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure-processor</artifactId>
        </dependency>
        
       <!-- Caffeine -->
        <dependency>
            <groupId>com.github.ben-manes.caffeine</groupId>
            <artifactId>caffeine</artifactId>
            <version>2.7.0</version>
        </dependency>
      
     <!-- Redisson -->
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson-spring-boot-starter</artifactId>
            <version>3.11.0</version>
            <exclusions>
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
     <!-- spring cache-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>

        <!-- for Redisson 3.x -->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-core</artifactId>
        </dependency>

        <!-- jackson json-->
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
            <version>2.9.7</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-parameter-names</artifactId>
            <version>2.9.7</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jdk8</artifactId>
            <version>2.9.7</version>
        </dependency>
      
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        
       <!-- 自动生成 Spring boot starter 的一些基础配置 -->
        <dependency>
            <groupId>net.dreamlu</groupId>
            <artifactId>mica-auto</artifactId>
            <scope>provided</scope>
        </dependency>

      <!-- lombok-->
      <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>

上一篇下一篇

猜你喜欢

热点阅读