基于redisson+spring cache+caffeine

作者: 510_C | 来源:发表于2020-03-21 00:16 被阅读0次

技术介绍

  • redisson
    Redisson是架设在Redis基础上的一个Java驻内存数据网格(In-Memory Data Grid)。【Redis官方推荐】
    基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。

  • spring cache
    Spring 3.1 引入了激动人心的基于凝视(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(比如EHCache 或者 OSCache),而是一个对缓存使用的抽象,通过在既有代码中加入少量它定义的各种 annotation,即能够达到缓存方法的返回对象的效果。
    Spring 的缓存技术还具备相当的灵活性。不仅能够使用 SpEL(Spring Expression Language)来定义缓存的 key 和各种 condition,还提供开箱即用的缓存暂时存储方案,也支持和主流的专业缓存比如 EHCache 集成。

  • caffeine(目前性能最好的本地缓存)
    Caffeine是基于jdk 1.8 Version的高性能缓存库。Caffeine提供的内存缓存使用参考Google guava的API。Caffeine是基于Google Guava Cache设计经验上改进的成果。

实现功能

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>

相关文章

  • 基于redisson+spring cache+caffeine

    技术介绍 redissonRedisson是架设在Redis基础上的一个Java驻内存数据网格(In-Memory...

  • 三种管理方式

    基于控制 基于责任 基于愿景

  • 推荐系统简介

    推荐问题产生 信息过载 推荐问题解决方法 基于内容 基于协同过滤 基于邻域的方法基于用户基于物品 基于模型的方法隐...

  • Spring配置元数据的三种方式

    基于java配置方式 基于注解方式 基于xml方式

  • 清晨日记 | 高效率慢生活践行DAY24【文案】

    Keep moving forward 过分追求完美,往往过得并不完美 ——基于流程、基于制度、基于习惯、基于训练...

  • 分布式锁(Redis)

    基于数据库的 基于redis 基于zookeeper 基于数据库 基于redis 先来看第一种 改进版 redi...

  • 分布式锁入门

    目前主流的有三种: 基于数据库实现 基于Redis实现 基于ZooKeeper实现 1. 基于数据库实现: 基于数...

  • 关于中文分词

    一. 分词的类型 1. 基于词典:基于字典、词库匹配 2. 基于统计 3. 基于理解 二. 基于词典分词 1. 正...

  • 清晨日记 | 高效率慢生活践行DAY25【千茄】

    Keep moving forward 严肃的个人追求,需要纯时间的积累 ——基于流程、基于制度、基于习惯、基于训...

  • 逃离(1)

    前言: 逃离,可以基于软弱,可以基于无奈,可以基于恐惧,也可以基于淡漠。我的逃离基于什么我自己也不清楚,好像都是,...

网友评论

    本文标题:基于redisson+spring cache+caffeine

    本文链接:https://www.haomeiwen.com/subject/uldeyhtx.html