{"repo":"yixinhai/easy-cache","free":true,"listed":false,"github":"https://github.com/yixinhai/easy-cache","clone":"git clone https://github.com/yixinhai/easy-cache.git","description":"easy-cache 是一个基于 Spring Boot 的高性能多级缓存框架，整体基于RocksCache思想，提供简单易用的注解式缓存操作。该框架支持 Redis 集群缓存和本地二级缓存，具备多级缓存动态升降级、容错机制、缓存穿透防护、弹性过期、最终一致性保障等高级特性。开发人员在开发需求时不需要额外编写代码保证一致性、穿透、雪崩、宕机问题，只需要在注解设置对应策略即可。","language":"Java","stars":26,"topics":["java","multi-level-cache","redis","rockscache","cache","easy-cache"],"license":null,"category":"databases-storage","readme_excerpt":"Easy-Cache 📖 项目简介 Easy-Cache 是一个基于 Spring Boot 的高性能多级缓存框架，提供简单易用的注解式缓存操作。该框架支持 Redis 集群缓存和本地二级缓存，具备多级缓存动态升降级、容错机制、缓存穿透防护、弹性过期、最终一致性保障等高级特性。开发人员在开发需求时不需要额外编写代码保证一致性、穿透、雪崩、宕机问题，只需要在注解设置对应策略即可。 微信公众号：https://mp.weixin.qq.com/s/OENxcvRSGtkPtNzjWwK6KQ 【流程设计思路参照了RocksCache 】 ✨ 核心特性 🚀 高性能多级缓存 Redis 集群缓存 : 支持多 Redis 集群配置，提供分布式缓存能力 本地二级缓存 : 基于 Guava Cache 的本地缓存，Redis 宕机时自动降级 智能缓存策略 : 支持按比例缓存到本地，避免缓存雪崩 🛡️ 容错与高可用 故障自动降级 : Redis 集群故障时自动切换到本地缓存，集群恢复后自动升级 健康检查机制 : 实时监控缓存集群状态，动态调整缓存策略 异步更新机制 : 支持异步缓存更新，提升系统响应速度 🔒 缓存安全 防缓存穿透 : 内置空值缓存机制，防止恶意请求穿透到数据库 分布式锁 : 基于 Redis 的分布式锁机制，防止缓存击穿 弹性过期 : 支持缓存标记删除，解决缓存与数据库不一致问题 🎯 简单易用 注解驱动 : 通过 @CacheAble 和 @CacheUpdate 注解即可实现缓存操作 自动序列化 : 支持 JSON 序列化，无需手动处理对象转换 灵活配置 : 支持多种缓存参数配置，满足不同业务场景需求 🏗️ 项目结构 easy-cache/ ├── aop/ # 注解和切面处理 │ ├── CacheAble.java # 缓存查询注解 │ ├── CacheUpdate.java # 缓存更新注解 │ └── CacheAspect.java # 缓存切面 ├── core/ # 核心功能模块 │ ├── dispatcher/ # 缓存调度器 │ ├── executor/ # 缓存执行器 │ ├── lua/ # Redis Lua脚本 │ └── monitor/ # 监控模块 ├── config/ # 配置类 ├── entity/ # 实体类 ├── exception/ # 异常类 └── utils/ # 工具类 UML核心类图 缓存一致性保证机制 Easy-Cache 通过分布式锁机制和Lua脚本原子操作，确保缓存数据的最终一致性。 缓存数据结构 缓存中的数据是具有以下字段的哈希结构： value : 数据本身 lockInfo : 锁定状态信息（'locked' 或 'unLock'） unlockTime : 数据锁过期时间，当一个进程查询缓存没有数据时，则锁定缓存一小段时间，然后查询DB、更新缓存 owner : 数据锁UUID，标识当前锁的持有者 查询缓存流程 查询缓存时，Lua脚本会执行以下逻辑： 1. 如果数据为空且锁已过期 : 则锁定缓存，返回 NEED QUERY ，同步执行\"取数据\"并返回结果 2. 如果数据为空且被锁定 : 则返回 NEED WAIT ，休眠100ms并再次查询 3. 如果数据不为空且被锁定 : 则立即返回结果，异步执行\"取数据\" 4. 如果数据不为空且未锁定 : 则立即返回结果 \"取数据\"操作定义 判断是否需要更新缓存，如果满足以下两个条件之一，则需要更新缓存： 数据为空且未","default_branch":null,"files":null,"tree":[],"storefront":"/r/yixinhai","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/yixinhai/easy-cache/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}