先设置缓存配置类,类名和spring.factories中的对应上。这其中涉及到本地缓存caffeine和redis缓存配置,关于caffeine的相关内容可以看之前的文章。 代码语言:java 复制 @Configuration@Import(SpringUtil.class)@ComponentScan(basePackages="com.xiaoyi.multiTtlCache")@EnableCachingpublicclassCustomizedRedisAutoConfiguration{publ...
private Object useCaffeineCache(String key, CustomizedCacheable cacheable, ProceedingJoinPoint proceedingJoinPoint) { MyCaffeineCache myCaffeineCache = (MyCaffeineCache) SpringUtil.getBean(MyCaffeineCache.class); Object o = myCaffeineCache.get(key); if (o != null) { Long ttl = myCaffeineCache.get...
首先,我们需要定义两个Caffeine的缓存对象,分别保存商品、库存的缓存数据。 在item-service的com.heima.item.config包下定义CaffeineConfig类: packagecom.heima.item.config;importcom.github.benmanes.caffeine.cache.Cache;importcom.github.benmanes.caffeine.cache.Caffeine;importcom.heima.item.pojo.Item;importcom.h...
将热点数据放本地缓存(一级缓存),将非热点数据放redis缓存(二级缓存)。1、缓存的选择 一级缓存:Caffeine是一个一个高性能的 Java 缓存库;使用 Window TinyLfu 回收策略,提供了一个近乎最佳的命中率。二级缓存:redis是一高性能、高可用的key-value数据库,支持多种数据类型,支持集群,和应用服务器分开部署...
在JVM进程缓存中,我们将会使用Caffeine实现进程缓存 在上一篇中,我们学习目标中,最后一个是缓存同步策略。如下图:在缓存同步策略及后期做数据同步需要用到MySQL的主从功能,所以,建议大家在虚拟机中,利用docker来运行一个MySQL容器。在docker中运行MySQL容器步骤如下:前提:你的虚拟机中已经安装了docker。如果不会...
一、多级缓存介绍 1、传统缓存的问题 2、多级缓存方案 二、JVM进程缓存 1、初始Caffeine 缓存分类 Caffeine入门 2、实现进程缓存 三、Lua脚本 1、初始Lua 2、Lua语法 数据类型 变量 循环 编辑 函数 条件控制 四、OpenResty 1、初始OpenResty 2、OpenResty快速入门 ...
一. 为什么要用多级缓存? 如果只使用redis来做缓存我们会有大量的请求到redis,但是每次请求的数据都是一样的,假如这一部分数据就放在应用服务器本地,那么就省去了请求redis的网络开销,请求速度就会快很多。但是使用redis横向扩展很方便。 如果只使用Caffeine来做本地缓存,我们的应用服务器的内存是有限,并且单独为了缓...
一. 为什么要用多级缓存? 如果只使用redis来做缓存我们会有大量的请求到redis,但是每次请求的数据都是一样的,假如这一部分数据就放在应用服务器本地,那么就省去了请求redis的网络开销,请求速度就会快很多。但是使用redis横向扩展很方便。 如果只使用Caffeine来做本地缓存,我们的应用服务器的内存是有限,并且单独为了缓...
Caffeine 是目前性能最好的本地缓存,因此,在考虑使用本地缓存时,直接选择 Caffeine 即可。 Caffeine.newBuilder().maximumSize(6000).expireAfterAccess(10, TimeUnit.MINUTES) .expireAfterWrite(10, TimeUnit.MINUTES).removalListener(new RemovalListener<String, CacheUserInfo>() { ...
一、系统多级缓存结构设计目的 1、内存缓存真正满足高性能,内存缓存比Redis缓存至少快100倍以上。 2、支持Spring Boot 服务下,Redis + Caffeine的高性能分布式缓存的实现。 3、减少应用服务集成接入成本,通过AOP方式拦截快速实现缓存, 不侵入原业务逻辑。