C#中缓存的简单方法及使用Sql设置缓存依赖项

概述

使用Cache高速缓存可以提高数据的读取速度,减少服务器与客户端之间的数据交互。因为Cache一经创建就会占用服务器上的资源,所以Cache并不是越多越好,一般用于数据较固定,使用较频繁的地方。

Cache类的简单使用方法

  1. 首先,我们需要引用命名空间System.Web.Caching;

  2. Cache类的方法主要提供对缓存数据的编辑操作,如增、删、改等。

在这里我们主要介绍Cache类的Add方法用于将数据添加到Cache对象

Add方法主要包含以下7个参数下:

  • 参数“key”代表缓存数据项的键值,必须是唯一的。

  • 参数“value”代表缓存数据的内容,可以是任意类型。

  • 参数“dependencies”表示缓存的依赖项,也就是此项的更改意味着缓存内容已经过期。如果没有依赖项,可将此值设置为NULL。

  • 参数“absoluteExpiration”是日期型数据,表示缓存过期的时间,.NET 2.0提供的缓存在过期后是可以使用的,能使用多长时间,就看这个参数的设置。

  • 参数“slidingExpiration”的类型表示一段时间间隔,表示缓存参数将在多长时间以后被删除,此参数与absoluteExpiration参数相关联。

  • 参数“priority”表示撤销缓存的优先值,此参数的值取自枚举变量“CacheItemPriority”,优先级低的数据项将先被删除。此参数主要用在缓存退出对象时。

  • 参数“onRemoveCallback”表示缓存删除数据对象时调用的事件,一般用做通知程序。

通过Add方法,我们可以像这样简单的创建一个Cache

Cache.Add(ID.ToString(), author, mydep, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.Normal, null);

当Cache[ID.ToString()]不为null时,我们就可以直接从缓存中读取数据。

  1. 如果想要删除创建的缓存,可以通过Remove方法移除缓存项
Cache.Remove(ID.ToString());

Sql缓存依赖类:SqlCacheDependency类

我们在上面提到了通过设置缓存依赖项可以检测缓存内容是否已经过期,一旦过期就应该及时更新。在这里我们使用SqlCacheDependency类来检测数据库的数据是否更新。

首先我们先来进行一些设置

  1. 打开Web.config配置文件,进行如下设置
<connectionStrings>
  <add name="huxiu" connectionString="data source=(localdb)\v11.0;initial catalog=huxiu;integrated security=True;multipleactiveresultsets=True;"  />
  </connectionStrings>
 <system.web>
    <caching>
      <sqlCacheDependency enabled="true" pollTime="1000">
        <databases>
          <add name="huxiu" connectionStringName="huxiu" />
        </databases>
      </sqlCacheDependency>
    </caching>

其中pollTime单位为毫秒,意思是每隔1秒检测下数据库,检测表是否有发生变化。connectionStringName应于上面connectionStrings中add name的名字相同。caching中的add name在后面创建缓存依赖项的时候会使用到。

  1. 通过命令行启动数据库缓存依赖项

在C盘中找到aspnet_regsql.exe位于的目录,使用cmd命令行打开该目录

在该目录下输入

aspnet_regsql -C "data source=(localdb)\v11.0;initial catalog=huxiu;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot" -ed -et -t "dbo.Author"

其中-c后面为数据库连接字符串,-t后面为数据库中表的名称

image

然后,继续在该目录下输入如下代码

以下这步不知道和上面的设置有没有重复,如果出现VS中报错无法连接到SQL 数据库进行缓存依赖项轮询可以尝试继续进行以下设置,没有则可以跳过。

aspnet_regsql -S (localdb)\v11.0 -E -d dbname -ed
aspnet_regsql -S (localdb)\v11.0 -E -d dbname -t dbtable -et

其中dbname为数据库名称,dbtable为数据库中表的名称

image
image

  1. 创建缓存依赖项

使用以下代码创建缓存依赖项

SqlCacheDependency mydep = new SqlCacheDependency("huxiu","Author");

其中的两个参数分别为caching中的add name的名字和数据库中表的名字

通过以上的步骤,我们就可以实现当数据库被更改时通过SqlCacheDependency的HasChanged方法进行判断,从而对缓存数据进行更新。

转载于:https://www.cnblogs.com/msnlyf/p/6664215.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值