Skip to content
forked from ck-jesse/l2cache

L2Cache 是一个基于 Caffeine + Redis 的二级缓存框架。让缓存的使用在业务开发中更加简单、高效。

License

Notifications You must be signed in to change notification settings

xiawei520/l2cache

 
 

Repository files navigation

L2Cache 分布式二级缓存框架

Maven Central Crates.io

一、简介

L2Cache 是一个基于内存RedisSpring Cache 实现的满足高并发场景下的分布式二级缓存框架。

二、如何使用

三、重要数据

  • 已在生产环境投产,目前主要应用在商品、优惠券、用户、营销等核心服务。
  • 经历过多年双十一、双十二,以及多次大促活动的流量洗礼
  • 支撑公司单月10亿GMV
  • 支撑全链路压测35W QPS

四、核心功能

  • 支持多种缓存类型: 一级缓存、二级缓存、混合缓存
  • 解决痛点问题: 缓存击穿、缓存穿透等
  • 动态缓存配置: 支持动态调整混合缓存下的缓存类型,支持热key的手动配置
  • 缓存一致性保证: 通过消息通知的方式来保证集群环境下一级缓存的一致性
  • 自动热key探测: 自动识别热key并缓存到一级缓存
  • 支持缓存批量操作: 支持分页的批量获取、批量删除等
  • 定义通用缓存层: 承上启下,简化业务开发,规整业务代码

1、同其他开源框架的对比

核心功能 JetCache(阿里) J2Cache(OSChina) L2Cache
支持的缓存类型 一级缓存
二级缓存
混合缓存
一级缓存
二级缓存
混合缓存
一级缓存
二级缓存
混合缓存
解决的痛点问题 缓存击穿
缓存穿透
缓存击穿
缓存穿透
缓存击穿
缓存穿透
缓存一致性保证 支持 支持 支持
动态缓存配置 不支持 不支持 支持
自动热key探测 不支持 不支持 支持
缓存批量操作 不支持 不支持 支持
通用缓存层 不支持 不支持 支持

说明:上面表格的对比,数据正在整理中,后续会再校对一次。

  • 从上面表格的对比可发现,L2Cache 的核心优势为三个点:自动热key探测缓存批量操作通用缓存层
  • 这三点优势是从实际业务开发中沉淀下来的能力,不仅解决了实现多级缓存的复杂性问题,还进一步屏蔽了业务维度的缓存操作的复杂性。
  • 这样一来,原本需要资深开发者才能开发的功能,现在高级和中级开发者,甚至初级开发者都能轻松、高效、高质地进行开发。
  • 如果在实际业务开发中,你也遇到开发难度高,难以维护,难以扩展的痛点问题,建议可以试试L2Cache。反正接入成本低,试试又何妨?

2、L2Cache 的二级缓存结构

1、L1:一级缓存,内存缓存,支持 CaffeineGuava Cache

2、L2:二级缓存,集中式缓存,支持 Redis

3、混合缓存,指支持同时使用一级缓存和二级缓存。

由于大量的缓存读取会导致 L2 的网络成为整个系统的瓶颈,因此 L1 的目标是降低对 L2 的读取次数。避免使用独立缓存系统所带来的网络IO开销问题。L2 可以避免应用重启后导致的 L1数据丢失的问题,同时无需担心L1会增加太多的内存消耗,因为你可以设置 L1中缓存数据的数量。

说明:

L2Cache 满足CAP定理中的AP,也就是满足可用性和分区容错性,至于C(一致性)因为缓存的特性所以无法做到强一致性,只能尽可能的去做到一致性,保证最终的一致。

3、关键点:

支持根据配置缓存类型来灵活的组合使用不同的Cache。

1、支持只使用一级缓存CaffeineGuava Cache

2、支持只使用二级缓存Redis

3、支持同时使用一二级缓存Composite

必知:

若使用缓存,则必然可能出现不一致的情况,也就是说无法保证强一致性。

五、实战问题

六、鼓励与帮助

如果 l2cache 对您有所帮助,不妨右上角点点 Star 或者任意赞赏支持。

您的 Star赞赏 将会给我带来更多动力。

最后,欢迎你 Fork PR 成为项目贡献者。

About

L2Cache 是一个基于 Caffeine + Redis 的二级缓存框架。让缓存的使用在业务开发中更加简单、高效。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 39.7%
  • JavaScript 36.3%
  • CSS 13.3%
  • HTML 10.6%
  • Hack 0.1%