【数媒在线课堂】Xcache:多级缓存框架介绍

2025-09-10 06:35:09 113

推广 | 这一次的源创会,不会只让你坐着听讲

多年前,我造过一个轮子,也是多级缓存框架,名字也叫做 Xcache。

多年后,本着重复造轮子的精神,我又造了个新轮子:https://github.com/patricklaux/xcache

因为是新造的轮子,所以看起来似乎更圆了一些,跑起来似乎也更顺滑了一些。

非要自夸一下的话,那就是这么些年的编程生涯,在踩过许多坑之后,编码质量更好了点,架构设计更合理了些。

1. 整体架构

展开剩余69%

说明:

Cache API:缓存接口。

Cache Annotation:缓存注解。

Cache:缓存对象。

Store:缓存数据存储,每个缓存对象实例最多可支持三级缓存数据存储。

Codec:数据编解码(序列化与反序列化)。

Compressor:数据压缩。

CacheLoader:数据加载,用于从数据源读取数据。

CacheRefresh:缓存数据刷新,定时通过 CacheLoader 加载并刷新缓存数据。

CacheSync:缓存数据同步,用于维护各实例间私有缓存数据的一致性。

CacheMetrics:缓存指标采集,用于记录缓存调用次数及命中率等指标。

MetricsSystem:缓存指标信息的存储、计算与展示。

MQ:消息队列,用于转发数据同步消息(已有实现采用 Redis Stream)。

DataSource:数据源。

RedisorOther……:缓存数据存储仓库。

2. 框架特性

支持多级缓存:一级缓存采用 Caffeine,二级缓存采用 Redis,最多可支持三级缓存。

缓存数据同步:通过缓存事件广播,多个应用实例的缓存数据保持一致。

缓存指标统计:支持调用次数、命中次数等指标,数据呈现可自由扩展。

缓存数据刷新:定时自动刷新缓存数据,避免慢查询导致应用响应缓慢。

随机存活时间:可选择使用随机存活时间,避免大量数据集中过期,导致数据源压力过大。

数据回源加锁:同一个键同一时刻仅允许一个线程回源查询,减轻数据源压力。

数据存在断言:可选择实现数据存在断言接口,譬如 Bloom Filter,减少无效回源查询。

支持缓存空值:可选择缓存空值,减少无效回源查询。

缓存数据压缩:可选择数据压缩,降低内存 (磁盘) 消耗。

支持缓存注解:Cacheable,CacheableAll,CachePut,CachePutAll,…… ,CacheClear

适配 Spring Cache 注解:如希望使用 Spring Cache 注解,可依赖 Xcache 适配项目,即可解锁更多功能。

发布于:湖南省

新闻动态

热点资讯

推荐资讯