基于 Redis + Caffeine 做多级缓存

Spring boot2.7整合jetcache 远程redis缓存方案 简单说 JetCache实体类 调用其中的 put函数 传入键值对 键为 name 唯一标识 值为 小猫猫 存入的内容。这里 我就保持原样了 然后 要注意 只有 启动类 加了 @EnableCreateCacheAnnotation。这个 就是个 starter 它做了整合 因此也不需要额外去导 redis的包了。然后 我们来写 application 的内容 我这里 是yml 格式的。然后 我们需要在 用缓存的类中 注入 Cache。 阅读详情

基于 Redis + Caffeine 做多级缓存

  1. 背景:在我们的项目中,经常需要查询一些数据,而大部分数据都是不经常改变的,所以我们可以存在缓存中,这里我们使用Caffeine作为本地缓存库,redis分布式缓存来实现

JetCache 是一个 Java 缓存库,旨在提供简洁、高性能且通用的缓存解决方案。它支持多种缓存策略和缓存存储类型,包括本地缓存(如Caffeine、Guava 等)和分布式缓存( Redis、Memcached 等)

Caffeine 是一个高性能的 Java 缓存库,受到了 Google Guava 缓存库的启发。它主要用于实现本地缓存,具有高效的缓存命中率和低延迟的特点。Caffeine 提供了灵活的缓存策略和强大的功能,使其成为许多 Java 应用程序的首选缓存解决方案。

  1. maven依赖导入
<!--    Caffeine    -->
<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
    <version>3.1.8</version>
</dependency>

<!--    JetCache    -->
<dependency>
    <groupId>com.alicp.jetcache</groupId>
    <artifactId>jetcache-starter-redisson</artifactId>
    <version>2.7.5</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!--     Redis  -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  1. 配置文件
jetcache:
  statIntervalMinutes: 1        # 设置统计信息收集的时间间隔为1分钟
  areaInCacheName: false        # 禁用在缓存名称中包含区域名称
  local:
    default:
      type: caffeine            # 使用Caffeine作为本地缓存实现
      keyConvertor: fastjson2   # 使用Fastjson2进行键转换
  remote:
    default:
      type: redisson            # 使用Redisson作为远程缓存实现
      keyConvertor: fastjson2   # 使用Fastjson2进行键转换
      broadcastChannel: ${spring.application.name}  # 广播频道名称设置为Spring应用程序名称
      keyPrefix: ${spring.application.name}         # 键前缀设置为Spring应用程序名称
      valueEncoder: java        # 使用Java进行值编码
      valueDecoder: java        # 使用Java进行值解码
      defaultExpireInMillis: 5000  # 设置默认过期时间为5000毫秒(5秒)
  1. 开启注解

在启动类上开启注解@EnableMethodCache

@EnableMethodCache(basePackages = "xx.xx.xx")
public class Application {
}
  1. 常用注解
@Cached(name = ":user:cache:id:", expire = 3000, cacheType = CacheType.BOTH, key = "#userId", cacheNullValue = true)
@CacheRefresh(refresh = 60, timeUnit = TimeUnit.MINUTES)
@CacheInvalidate(name = ":user:cache:id:", key = "#request.userId")
  • @Cached:为一个方法添加缓存,创建对应的缓存实例,注解可以添加在接口或者类的方法上面,该类必须是spring bean
    name:指定缓存实例名称,如果没有指定,会根据类名+方法名自动生成。
    expire:超时时间。如果注解上没有定义,会使用全局配置,如果此时全局配置也没有定义,则为无穷大。
    cacheType:缓存的类型,支持:REMOTE、LOCAL、BOTH,如果定义为BOTH,会使用LOCAL和 REMOTE组合成两级缓存。
    key:使用SpEL指定缓存key,如果没有指定会根据入参自动生成。
    cacheNullValue:当方法返回值为null的时候是否要缓存。

  • @CacheRefresh:用于标识这个缓存需要自动刷新
    refresh:刷新的时间间隔 timeUnit:时间单位

  • @CacheInvalidate:用于标识这个方法被调用时需要移除缓存
    name:指定缓存的唯一名称,一般指向对应的@Cached定义的name。
    key:使用SpEL指定key,如果没有指定会根据入参自动生成。

缓存篇(二)- JetCache 本文将由浅入深,从基本特性介绍,从简单demo使用,到JetCache源码分析,到Spring Aop的源码分析,到如何利用这些知识去自己尝试写一个自己的cache小demo,去做一个全面的概括。 *背景和特性 *用法demo *JetCache源码分析 *Spring Aop的支持和源码分析 *写一个简单的cache框架demo   背景和特性 对于一些cache框架或产品,我们... 阅读详情

相关推荐

【黑马点评优化】之使用Caffeine+Redis实现应用级二层缓存

【黑马点评优化】之商户查询缓存雪崩之使用Caffeine+Redis实现应用级二层缓存

m0_52031708的博客 4126

阿里一款非常不错的多级缓存框架如何使用?

在很多大数据、高并发的业务中,像MySql等传统的关系型数据库已经不能适用于所有的业务场景,比如电商系统的秒杀场景,APP首页的访问流量高峰场景,很容易造成关系型数据库的瘫痪,随着缓存技术的出现很好的解决了这问题。今天一起学习一下多级缓存的概念。。

人生若只初相见@的博客 7877

SpringBoot 集成 Caffeine、Redis实现双重缓存方式(一)

一、本地缓存Caffeine介绍 一般情况下,缓存针对的主要是读操作。当你的功能遇到下面的场景时,就可以选择使用缓存组件进行性能优化: 存在数据热点,缓存的数据能够被频繁使用; 读操作明显比写操作要多; 下游功能存在着比较悬殊的性能差异,下游服务能力有限; 加入缓存以后,不会影响程序的正确性,或者引入不可预料的复杂性; 日常开发中,基本上每个项目中都会使用到Redis、MongoDB等缓存中间件,它能够很好的作为分布式缓存组件提供多个服务间的缓存,但是还是需要网络开销,增加时耗。 除了分布式缓存

weixiaohuai的博客 9815

JetCache多级缓存实现用户信息快速查询

也就是说我们的一次查询,会先查询本地缓存,如果本地缓存查不到,再查询分布式缓存。除此之外,JetCache 还提供了@CreateCache、@CacheUpdate等常用注解,这就是我们基于缓存的自动更新+失效,来保证缓存的一致性的一般做法。cacheType:缓存的类型,支持:REMOTE、LOCAL、BOTH,如果定义为BOTH,会使用LOCAL和REMOTE组合成两级缓存。在我们的项目中,经常会需要查询用户信息,比如前端页面需要展示,用户校验权限需要,可以说我们做的几乎所有操作都需要查询。

muwan2900的博客 1213

Redis+Caffeine 多级缓存数据一致性解决方案

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。当有新消息通过 publish 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端。Redis的订阅发布功能与传统的消息中间件(如:RabbitMQ)相比,相对轻量一些,针对数据准确和安全性要求没有那么高的场景可以直接使用。本文主要讲解了在使用Redis和Caffeine多级缓存时使用Redis的发布订阅模式来保证两级缓存的数据一致性。

Y_eatMeat的博客 2855

Redis多级缓存

官方网站: https://openresty.org/cn/

lzping_719的专栏 1164

基于 Spring Boot + JetCache + Redisson 的 JPA 缓存解决方案

​ 2. 核心配置(application.yml) ​ 3. 实体类与Repository ​ 4. 自定义缓存配置类 ​ 5. Service层实现(带缓存注解) ​ 6. 缓存Key生成策略(可选) ​ 7. 测试Controller ​ 8. 缓存监控(可选) ​ 方案特点说明 多级缓存策略:防缓存穿透:分布式锁集成: ​ 缓存一致性保障:性能优化: ​ 性能监控指标 指标 说明 cache_hit_rate 缓存命中

hchx0407062010的博客 725

使用 Caffeine + Redis 构建多级缓存

在高并发场景下,使用 Caffeine + Redis 构建多级缓存 是一种高效的架构设计。Caffeine 作为本地缓存,提供快速响应和低延迟;Redis 作为远程缓存,支持数据共享和大容量存储。多级缓存相较于单级缓存(仅 Redis)具有显著优势:本地内存访问速度极快,分担 Redis 流量压力,提升并发性能,并在 Redis 故障时可通过 Caffeine 降级使用。在 Spring Boot 中,可以通过配置 Caffeine 和 Redis 实现多级缓存,核心组件包括缓存配置类、Redis 配置类

红血哥 1510

JetCache 基于 Redis 和 Caffeine 做多级缓存

JetCache是一个基于Java的高性能、高可用的分布式缓存系统,它提供了内存级别的缓存服务。JetCache在设计上借鉴了Redis的一些特性,并且针对大规模应用环境进行了优化,支持多种数据结构和操作,同时具备高并发、低延迟的特点。

weixin_64204704的博客 1341

多级缓存入门:Caffeine、Lua、OpenResty、Canal

多级缓存 JVM进程缓存 Caffeine Lua语法入门 Nginx业务编码实现多级缓存 OpenResty Redis缓存预热 OpenResty查询Redis缓存 Nginx本地(OpenResty)缓存 缓存同步 监听Canal实现缓存同步

weixin_43739821的博客 1221

WRF移动嵌套结合伏羲模型与CFD(PALM)高精度多尺度降尺度分析研究

WRF移动嵌套(Moving Nesting):动态调整高分辨率嵌套网格位置,追踪天气系统(如台风、强对流系统)以提高局地预报精度。伏羲(Fuxi)模型:国产数值模式,提供对WRF模拟的初始及边界条件优化。CFD(Computational Fluid Dynamics)PALM模型:精细化局地流场、湍流、温度分布。

m0_57411304的博客 1714

Caffeine和Redis居然可以这么搭,想不到吧,爱了爱了

一. 为什么要用多级缓存?如果只使用redis来做缓存我们会有大量的请求到redis,但是每次请求的数据都是一样的,假如这一部分数据就放在应用服务器本地,那么就省去了请求redis的网络开销,请求速度就会快很多。但是使用redis横向扩展很方便。如果只使用Caffeine来做本地缓存,我们的应用服务器的内存是有限,并且单独为了缓存去扩展应用服务器是非常不划算。所以,只使用本地缓存也是有很大局限性...

十指波课堂的博客 1200

企业微信群机器人配置全攻略:从零到消息推送的完整流程

本文详细介绍了企业微信群机器人的配置与使用全流程,从零开始指导如何创建机器人、获取Webhook地址,到通过HTTP请求发送文本、Markdown、图片及模板卡片等多种消息类型。内容涵盖核心的接口配置、安全实践及实战应用场景,帮助开发与运维团队快速构建自动化消息推送中枢,提升协作效率。

weixin_29231725的博客 840

SpringBoot+Caffeine+Redis实现多级缓存

本文系统介绍了多级缓存技术的核心概念、架构设计与实战应用。主要内容包括: 多级缓存定义与分层结构:通过本地缓存(Caffeine)+分布式缓存(Redis)+数据库缓存构建三级缓存体系,各层性能互补 核心优势:对比单一缓存,多级缓存可提升20倍QPS、降低60%延迟、减少87%数据库负载 设计原则:请求就近访问、数据分层存储、失效由上至下 主流架构:详细解析Caffeine+Redis二级缓存的读写流程和数据更新机制 实战实现:基于SpringBoot整合Caffeine和Redis,提供可落地的配置方案。

he_co的博客 1247

解决用加速器以后,电脑无法连接网络的问题

相信很多朋友也遇到过,用加速器以后,电脑网络直接断了,或者访问外网时打不开的情况解决办法是。

qq_46368050的博客 1万+

PyCharm安装PyQt5及工具(Qt Designer、PyUIC、PyRcc)详细教程来了

Qt是常用的用户界面设计工具,而在Python中则使用PyQt这一工具包,它是Python编程语言和Qt库的成功融合。这篇博文通过图文详细介绍在PyCharm中如何完整优雅地安装配置PyQt5的所有工具包,主要内容包括PyQt5、PyQt5-tools的依赖包安装和Qt Designer、PyUIC、PyRcc三个工具的设置。最后简单演示了PyQt5的调用方式及三个工具的使用方法。

Python966的博客 3万+

Redis+Caffeine构造多级缓存

Caffeine是一款基于Java 8的高性能、灵活的本地缓存库。它提供了近乎最佳的命中率,低延迟的读写操作,并且支持多种缓存策略,号称本地缓存之王。核心特性Caffeine的底层数据存储采用ConcurrentHashMap。因为Caffeine面向JDK8,在jdk8中ConcurrentHashMap增加了红黑树,在hash冲突严重时也能有良好的读性能。Caffeine采用了先进的缓存淘汰算法,如Window TinyLfu,以提供极高的缓存命中率和低延迟的读写操作。

是我的温柔啊 1041

xenomai内核解析--嵌入式实时linux概述

Linux系统作为一个GPOS(通用操作系统)发展至今已经非常成熟可靠了,并且由于遵循GPL协议,开放所有系统源代码,非常易于裁剪。更重要的是,与其他开源的GPOS或RTOS相比,Linux系统支持多种处理器、开发板,提供多种软件开发工具,同时Linux系统对网络和图形界面的支持非常出色。显然,选择Linux操作系统在产品的开发周期和成本控制方面都有巨大优势。 虽然Linux系统功能强大、实用性强...

wsg1100 3699

SpringBoot Cache使用Caffeine + Redis 支持多级缓存

今天发现一篇多级缓存文章,觉得很有参考价值,虽然目前还没有用这种架构,但是值得学习,再这里记录一下 为什么多级缓存 缓存的引入是现在大部分系统所必须考虑的 redis 作为常用中间件,虽然我们一般业务系统(毕竟业务量有限)不会遇到如下图 在随着 data-size 的增大和数据结构的复杂的造成性能下降,但网络 IO 消耗会成为整个调用链路中不可忽视的部分。尤其在 微服务架构中,一次调用往往会涉及多次调用 例如pig oauth2.0 的 client 认证[1] Caffeine 来自

zzhongcy的专栏 4516

【知识图谱】一文看懂知识图谱的搭建实践与科普教程(5万字完结篇)

所有可能的实体对:(“Mate40”,“华为”), (“Mate40”,“手机”), (“华为”,“手机”)。送入关系模型分类,预期输出 (“Mate40”,“华为”): 品牌, (“Mate40”,“手机”): 属于类别, (“华为”,“手机”): 无关系。,定义了图谱中概念和关系的类型层次结构,相当于知识图谱的“纲领”和“schema”。训练完成后,当模型看到新的句子,比如“苹果的MacBook笔记本性能强大”,识别出实体“苹果”(品牌)和“MacBook”(产品)后,就能正确输出关系“品牌”。

weixin_41645791的博客 2613

《Ventoy 制作系统安装 U 盘的具体步骤》

然后您可以在电脑的磁盘管理中对 U 盘进行快速格式化,选择 FAT32 或 NTFS 文件系统。至此,Ventoy 系统安装 U 盘就制作完成了。您可以在需要安装系统的电脑上,从 U 盘启动,然后选择相应的系统镜像进行安装。安装完成后,将您需要的操作系统镜像文件(如 Windows、Linux 等的 ISO 格式镜像)复制到 U 盘的根目录。在安装程序中,选择您插入的 U 盘设备,确保选择正确,以免误操作。2. 确认选择的 U 盘盘符正确,防止误操作导致其他磁盘数据丢失。点击“安装”按钮,等待安装完成。

jiyiwangluokeji的博客 2666

一篇搞定多级缓存:Redis分布式缓存+Caffeine本地缓存

看看官方介绍:Redis的重要特性总结存储在内存更高效的数据结构(用c语言编写,足够底层O(∩_∩)O)支持复制,集群;高可用!面试题:Redis为什么这么快?可以从官方给出的这几个方面回答。

m0_73904503的博客 3243

【AI绘图进阶指南】Latent Diffusion Model核心组件解析——从理论到实践

本文深入解析Latent Diffusion Model(LDM)的核心组件,包括Autoencoder、Denoiser和Conditioning Encoder的工作原理及实践应用。通过理论结合代码示例,揭示LDM如何高效处理图像生成任务,并优化AI绘图流程,为开发者提供从理论到实践的进阶指南。

weixin_42628941的博客 385

caffeine+redis多级缓存设置

caffeine+redis多级缓存设置 1.先处理redis系列化的问题指定redis系列化方式具体如下新增一个CacheRedisAutoConfig 添加一下代码 @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> redisTemplate = new R

qq_35517267的博客 1316

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SpringBoot缓存实战 Redis + Caffeine 实现多级缓存

来源:my.oschina.net/xiaolyuh/blog/1600987问题描述:通过使用redis和Caffeine来做缓存,我们会发现一些问题。如果只使用redis来做缓存我们会...

Java笔记虾 2758

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

多级缓存设计:Caffeine+Redis

其实使用查询的流程可以是一个模板方法,现在我们用图的方式来一步步深刻理解其流程。

xiaojun___的博客 1447

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: 基于redission+aop自定义分布式锁注解
下一篇: Linux(Alibaba Cloud Linux release 3) 安装JDK21.0.5
AllowM
博客等级 码龄7年 111粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值