Magicodes.WeiChat——缓存管理
本框架支持缓存管理,内部机制使用开源库CacheManager。支持全局缓存、租户缓存,默认使用的系统缓存实现,可以在Web.config将其配置为其他缓存类型,比如支持Redis、内存等。
开源库地址:https://github.com/MichaCo/CacheManager
1.1.1 配置
默认配置如下,见Web.config cacheManager元素内容:
<!--缓存配置--> <cacheManager xmlns="http://tempuri.org/CacheManagerCfg.xsd"> <managers> <cache name="defaultCache" updateMode="Up" enableStatistics="true" enablePerformanceCounters="true"> <handle ref="sysCache" name="defaultHandle" expirationMode="Absolute" timeout="3600s"/> </cache> </managers> <cacheHandles> <handleDef id="sysCache" type="CacheManager.SystemRuntimeCaching.MemoryCacheHandle`1, CacheManager.SystemRuntimeCaching" /> </cacheHandles> </cacheManager>
相关配置说明请参考:http://cachemanager.net/Documentation/Index/cachemanager_configuration
1.1.2 相关函数介绍:
/// <summary> /// 获取缓存 /// </summary> /// <typeparam name="T">值类型</typeparam> /// <param name="key">key</param> /// <returns>值</returns> public T Get<T>(string key) /// <summary> /// 获取缓存 /// </summary> /// <typeparam name="T">值类型</typeparam> /// <param name="key">key</param> /// <param name="tenantKey">租户Key值,如果为NULL则框架会自动获取当前账户的租户Id</param> /// <returns>值</returns> public T GetByTenant<T>(string key, string tenantKey = null) /// <summary> /// 添加或更新缓存 /// </summary> /// <typeparam name="T">值类型</typeparam> /// <param name="key">key</param> /// <param name="value">值</param> public void AddOrUpdate<T>(string key, T value) /// <summary> /// 添加或更新缓存 /// </summary> /// <typeparam name="T">值类型</typeparam> /// <param name="key">key</param> /// <param name="value">值</param> /// <param name="expire">过期时间</param> public void AddOrUpdate<T>(string key, T value, TimeSpan expire) /// <summary> /// 根据租户缓存 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="value"></param> /// <param name="tenantKey">租户Key值,如果为NULL则框架会自动获取当前账户的租户Id</param> public void AddOrUpdateByTenant<T>(string key, T value, string tenantKey = null) /// <summary> /// 根据租户缓存 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="value"></param> /// <param name="expire"></param> /// <param name="tenantKey"></param> public void AddOrUpdateByTenant<T>(string key, T value, TimeSpan expire, string tenantKey = null) /// <summary> /// 移除 /// </summary> /// <param name="key">缓存Key</param> /// <returns>是否移除成功</returns> public bool Remove<T>(string key) /// <summary> /// 根据租户移除 /// </summary> /// <param name="key">缓存Key</param> /// <param name="tenantKey">租户Key值,如果为NULL则框架会自动获取当前账户的租户Id</param> /// <returns>是否移除成功</returns> public bool RemoveByTenant<T>(string key, string tenantKey = null) /// <summary> /// 清理所有 /// </summary> /// <typeparam name="T">值类型</typeparam> public void Clear<T>() /// <summary> /// 清理所有 /// </summary> /// <typeparam name="T">值类型</typeparam> /// <param name="tenantKey">租户Key值,如果为NULL则框架会自动获取当前账户的租户Id</param> public void ClearByTenant<T>(string tenantKey = null)
1.1.3 Demo
获取缓存对象:
using Magicodes.WeiChat.Infrastructure.Cache;
var cache =CacheManager.Current;
获取值(全局):
var value = cache.Get<int>("UserSummaryCount");
获取值(按租户)
var value = cache.GetByTenant<int>("UserSummaryCount");
添加或更新值(全局):
cache.AddOrUpdate("UserSummaryCount", value);
cache.AddOrUpdate("UserSummaryCount", value, TimeSpan.FromHours(1));
添加或更新值(按租户):
cache.AddOrUpdateByTenant("UserSummaryCount", value);
cache.AddOrUpdateByTenant("UserSummaryCount", value, TimeSpan.FromHours(1));
出处:http://www.cnblogs.com/codelove/
沟通渠道:编程交流群<85318032> 产品交流群<897857351>
如果喜欢作者的文章,请关注【麦扣聊技术】订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
静听鸟语花香,漫赏云卷云舒。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架