HZY.Framework.Caching
HZY.Framework 独立缓存扩展包:方法级声明式缓存(AOP)+ 可扩展的异步缓存提供者抽象 ===== 使用教程 ===== 1、注册服务(启动模块 ConfigureServices 中): builder.Services.AddHzyCaching(); // 或自定义默认提供者: // builder.Services.AddHzyCaching(o => o.DefaultProviderName = "Redis"); 2、方法缓存 [Cacheable](基于 HZY.Framework.Aop 编译期织入,方法需为 virtual/接口实现): public class MemberService { // 显式 Key 模板:支持 {参数名} 与 {参数.属性} [Cacheable(Key = "member:{id}", ExpirationSeconds = 300)] public virtual Task<Member> GetMemberAsync(long id) { ... } // 未设置 Key 时自动使用 方法全名+签名+参数值,避免不同参数缓存碰撞 [Cacheable] public virtual List<Member> GetMembersBy(string keyword) { ... } // 空值策略:默认不缓存 null / 空集合;缓存击穿防护:同 Key 并发只执行一次 [Cacheable(Key = "user:{id}", CacheNullValues = true)] public virtual User? GetUser(long id) { ... } } 3、缓存清理 [CacheEvict]: // 精确 Key 清理 + 按标签批量失效(标签版本号机制,O(1) 失效,不扫描缓存) [CacheEvict(Keys = new[] { "member:{id}" }, Tags = new[] { "member-list" })] public virtual Task UpdateMemberAsync(long id, Member member) { ... } 4、非 AOP 场景直接使用异步门面 ICacheService: var user = await cacheService.GetOrCreateAsync("user:1", () => LoadUserAsync(1), tags: ["user"]); 5、同步/异步执行模型:异步方法(Task/Task<T>)上的拦截为真异步(await,不阻塞线程, 支持内存与网络型提供者);同步方法仅支持同步提供者(IsSynchronous = true,如内存), 网络型提供者抛 NotSupportedException —— 请改用异步方法或 ICacheService 异步 API。 6、扩展分布式缓存:实现 ICacheProvider(含标签版本读写与 IsSynchronous 能力声明), 注册为 ICacheProvider 并设置 DefaultProviderName(AOP 与 ICacheService 按同一名称解析)。 源码与完整文档:https://gitee.com/hzy6/HZY.Framework
Activity
- Latest release
- 3d ago
- Total releases
- 1
- Cadence
- —
- Last 12 months
- 1
Details
- License
- MIT
- First release
- Sep 11, 2026
| Version | Released | |
|---|---|---|
10.1.19
initial
|
10.1.19
initial
Dependencies (3)
|