本框架支持缓存管理,内部机制使用开源库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));

Magicodes.WeiChat——缓存管理的更多相关文章

  1. Magicodes.WeiChat——版本发布历史

    购买地址:https://item.taobao.com/item.htm?id=520205558575 您可以在新标签页打开此图,以查看原始图片. Magicodes.WeiChat为湖南心莱信息 ...

  2. Magicodes.WeiChat——自定义knockoutjs template、component实现微信自定义菜单

    本人一向比较喜欢折腾,玩了这么久的knockoutjs,总觉得不够劲,于是又开始准备折腾自己了. 最近在完善Magicodes.WeiChat微信开发框架时,发现之前做的自定义菜单这块太不给力了,而各 ...

  3. Magicodes.WeiChat——多租户的设计与实现

    概要 多租户(Multi Tenancy/Tenant)是一种软件架构,其定义是:在一台服务器上运行单个应用实例,它为多个租户提供服务. 本框架使用的是共享数据库.共享 Schema.共享数据表的数据 ...

  4. Magicodes.WeiChat——WeChatOAuthTest(网页授权获取用户基本信息)

    Demo访问地址:http://wechat.magicodes.net/app/AppDemo/WeChatOAuthTest?tenantId=1 关于公众号如何获取用户信息,请参考此文档:htt ...

  5. Magicodes.WeiChat——V3.0(多租户)版本发布

    主要内容如下: 添加项目Magicodes.WeiChat.Data.Multitenant,全面支持多租户(基于EF已经ASP.NET Identity) 增加租户管理.租户成员管理.修改密码.公众 ...

  6. HTML5 离线缓存管理库

    一.HTML5离线缓存技术 支持离线缓存是HTML5中的一个重点,离线缓存就是让用户即使在断网的情况下依然可以正常的运行应用.传统的本地存储数据的方式有 localstorage,sessionsto ...

  7. Spring自定义缓存管理及配置Ehcache缓存

    spring自带缓存.自建缓存管理器等都可解决项目部分性能问题.结合Ehcache后性能更优,使用也比较简单. 在进行Ehcache学习之前,最好对Spring自带的缓存管理有一个总体的认识. 这篇文 ...

  8. 基于吉日嘎拉的通用权限管理WebForm版扩展:字典选项管理和缓存管理

    关于字典管理,其实就是2个表,一个表记录字典和对应表,另一个表记录字典内容.我这里改名为字典选项,其实是一个意思.直接上图: 这里的字典选项是分子系统的,每个子系统可以有自己的单独字典,方便管理.但是 ...

  9. [js开源组件开发]localStorage-cache本地存储的缓存管理

    localStorage-cache本地存储的缓存管理 距离上次的组件开发有近三个月的时间了,最近一直在做一些杂事,无法静下心来写写代码,也是在学习emberjs,在emberjs中有一个很重要的东西 ...

随机推荐

  1. C++温习

    string abc; cin >> abc; cin把 空格,制表符,换行符作为终止符,用于提取一个词.如果在abc串中输入的内容是有空格的,流中的内容会被打乱? getline (ci ...

  2. DDNS -VPN设置方法

    背景分析:一般情况下企业网络都是专线,也就是静态公网IP,但是也有一些是刚起步的小公司和一些网络需求不是很高的企业. 当前,由于公司是刚起步的小公司,网络是PPPOE拨号,但是又是总部和分部分开的,另 ...

  3. 3D图形学常用公式

    本篇内容来自于书籍<3D图形学基础:图形与游戏开发>,个人总结 1.数学背景与历史 笛卡尔数学由著名的法国哲学家.物理学家.生物学家.数学家"勒奈·笛卡尔"发明. 1. ...

  4. 【转载】理解GL_TRIANGLE_STRIP等绘制三角形序列的三种方式

    GL_TRIANGLE_STRIP绘制三角形方式很多时候令人疑惑,在这里对其运作机理进行解释. 一般情况下有三种绘制一系列三角形的方式,分别是GL_TRIANGLES.GL_TRIANGLE_STRI ...

  5. avalon2学习教程14动画使用

    avalon2实际上没有实现完整的动画模块,它只是对现有的CSS3动画或jquery animate再包装一层. 我们先说如何用CSS3为avalon实现动画效果.首先要使用avalon.effect ...

  6. mysql处理海量数据时的一些优化查询速度方法

      最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法. 由于在参与的实际项目中发现当mysql表的数据量达到百万级时,普通SQL查询效率呈直线下降,而且如果w ...

  7. 重新认识Android

    首先我们来看下源码中源于Activity的定义: public class Activity extends ContextThemeWrapper implements LayoutInflater ...

  8. LR录制https协议报证书错误,导航已阻止

    使用IE浏览器录制https协议报证书错误,导航已阻止,修改如下配置文件:

  9. 项目使用中Linq使用总结

    项目使用中Linq使用总结 本文旨在和网友分享Linq在项目中的实践,曾经我参与过的项目都能看见Linq的影子.(LinqTosql.LinqToString.LinqToXML.LinqToEnti ...

  10. R6010 - abort() has been called 错误

    今天修改了下程序,发布到服务器上进行测试,结果在测试的时候弹出下面的一个框: 找了N久,发现了原因,差点呗自己弄哭了.. 程序里写了下面这句代码,没有注释掉.