2006年01月版企业库中缓存应用程序块

2006年01月版企业库中缓存应用程序块唯一发生变化的,就是跟整个企业库一样都抛弃了上一个版本的配置应用程序块。进而发生的变化。其他部分没有变化。

下面我们看一个简单的应用程序快的配置文件:

<configuration>
  <configSections>
    <section name="cachingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings, Microsoft.Practices.EnterpriseLibrary.Caching, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
  </configSections>
  <cachingConfiguration defaultCacheManager="Cache Manager">
    <cacheManagers>
      <add expirationPollFrequencyInSeconds="60" maximumElementsInCacheBeforeScavenging="1000"
        numberToRemoveWhenScavenging="10" backingStoreName="inMemory"
        name="Cache Manager" />
    </cacheManagers>
    <backingStores>
      <add encryptionProviderName="" type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
        name="inMemory" />
    </backingStores>
  </cachingConfiguration>
</configuration>

在配置文件中,我可以可以看到一个缓存Manager 具有以下配置信息:
1、expirationPollFrequencyInSeconds  多少秒进行一次过期检查,缺省值60秒
2、maximumElementsInCacheBeforeScavenging 最多可以缓存对象数,超过这个个数,则触发清除事件,缺省值 1000;
3、numberToRemoveWhenScavenging  每次清除缓存项时候,按照优先级,清除掉优先级低的多少项。
4、backingStoreName  备份缓存的数据(辅助存储器 Backing Storage),备份保存在那里?默认备份不缓存。
系统默认提供了三种备份缓存存储方式
4.1、不缓存 Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore

4.2、缓存在数据库中  Microsoft.Practices.EnterpriseLibrary.Caching.Database.DataBackingStore
注意,这个类在 microsoft.practices.enterpriselibrary.caching.database.dll 文件中

4.3、缓存在一个隔离新的独立空间
Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.IsolatedStorageBackingStore 

上面我们看到的配置文件,采用的都是默认的缓存设置。

至于代码部分,则更简单,参看下面实例代码:
4.1
private CacheManager primitivesCache;

primitivesCache = CacheFactory.GetCacheManager();
primitivesCache.Add("1", 234);
primitivesCache.Add("12", "guohongjun");
primitivesCache.Add("33","www.csdn.net ",
    CacheItemPriority.Normal,
    null,
    new SlidingTime(TimeSpan.FromMinutes(1)));

object obj1 = primitivesCache.GetData("1");
object obj2 = primitivesCache.GetData("12");
object obj3 = primitivesCache.GetData("33");

primitivesCache.Flush();

其中
CacheManager.Add (String, Object, CacheItemPriority, ICacheItemRefreshAction, ICacheItemExpiration[])

方法,函数的参数依次是:
1、缓存的主键
2、缓存的对象
3、缓存的优先级,如果缓存数量溢出,则系统自动清除优先级低的;
4、实现 ICacheItemRefreshAction  接口的类,用于缓存项目被卸载时候,接受消息通知用。如果你想这时候更新缓存项,则需要接受并处理这个事件。
5、缓存项过期依赖项。系统默认提供了以下几种过期方式:

5.1  指定时间点过期
示例代码如下,AbsoluteTime 的构造函数参数为 DateTime 类型参数:
primitivesCache.Add(.......,new AbsoluteTime(this.AbsoluteTime));

5.2 比如,你可能需要定义每周六晚上9点半过期,这时候,你就需要这种格式了。
这种格式具体的写法,请查看源代码  Expirations/ExtendedFormat.cs
这里的注释中有详细描述
primitivesCache.Add(.......,new ExtendedFormatTime("0 0 * * *")

5.3 文件被修改,则过期
primitivesCache.Add(.......,new FileDependency("DependencyFile.txt")

5.4 指定多长时间段之后
primitivesCache.Add(.......,new SlidingTime(TimeSpan.FromMinutes(1)));

5.5 当然还有不过期
primitivesCache.Add(.......,new NeverExpired());

当然你也可以自己写自己的过期机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值