缓存+SqlCacheDependency(一)
来源:互联网 发布:淘宝代购dw表是真的吗 编辑:程序博客网 时间:2024/06/01 14:57
***** 为了避免“数据过期”,.net2.0引入了自定义缓存依赖项,特别是:System.Web.Caching.SqlCacheDependency : CacheDependency
他能够根据数据库中相应数据的变化,通知缓存,移除哪些过期的数据,借鉴PetShop5.0的案例,接下来详细说明:
------------------------------------------数据库不同版本的处理------------------------------------------------
Sql Server2000 不支持自动监视数据库表的功能,对于2000而言,还需要特殊的办法是他也有办法得到数据库数据有没有变化
1. 通过工具aspnet_regsql ; 通过输入配置命令,就可以在要监视的数据库表的数据上建立触发器,存储过程等来监视这些数据的变化
2.利用编程,通过类SqlCacheDependencyAdmin,可以自定义的控制要不要监听数据库里的数据表
Sql Server2005 就不需要这样的麻烦,他自身就具备了“变更通知的功能”
------------------------------------------PetShop5.0中,如何实现缓存的策略---------------------------------
一、为了扩展CacheDependency类,建立接口ICacheDependency
public interface IPetShopCacheDependency {
/// <summary>
/// Method to create the appropriate implementation of Cache Dependency
/// </summary>
/// <returns>CacheDependency object(s) embedded in AggregateCacheDependency</returns>
AggregateCacheDependency GetDependency();
}
AggregateCacheDependency 是依赖项的集合
二、实现CacheDependency
public abstract class TableDependency : PetShop.ICacheDependency.IPetShopCacheDependency { // This is the separator that's used in web.config protected char[] configurationSeparator = new char[] { ',' }; protected AggregateCacheDependency dependency = new AggregateCacheDependency(); /// <summary> /// The constructor retrieves all related configuration and add CacheDependency object accordingly /// </summary> /// <param name="configKey">Configuration key for specific derived class implementation</param> protected TableDependency(string configKey) { string dbName = ConfigurationManager.AppSettings["CacheDatabaseName"]; string tableConfig = ConfigurationManager.AppSettings[configKey]; string[] tables = tableConfig.Split(configurationSeparator); foreach (string tableName in tables) dependency.Add(new SqlCacheDependency(dbName, tableName)); } public AggregateCacheDependency GetDependency() { return dependency; } }
通过Web.config配置依赖项的数据库和数据库表,还有对SqlCacheDependency的支持:
<add key="CacheDatabaseName" value="MSPetShop4"/><!-- *TableDependency lists table dependency for each instance separated by comma --><add key="CategoryTableDependency" value="Category"/><add key="ProductTableDependency" value="Product,Category"/><add key="ItemTableDependency" value="Product,Category,Item"/>
<caching><sqlCacheDependency enabled="true" pollTime="10000"><databases><add name="MSPetShop4" connectionStringName="SQLConnString1" pollTime="10000"/></databases></sqlCacheDependency></caching>
不同数据库表,所需要的依赖项是不同的,但是他们有共同特征,都是要把不同数量的数据库表放到数据依赖集合里面.
对于某一个表,他的依赖项的添加都可以调用父类的方法
public class Product : TableDependency { /// <summary> /// Call its base constructor by passing its specific configuration key /// </summary> public Product() : base("ProductTableDependency") { } }
到目前为止:我们已经能过可以把需要监视的数据库表放到依赖项集合里面
- 缓存+SqlCacheDependency(一)
- sql SqlCacheDependency缓存依赖
- SqlCacheDependency缓存应用
- c#缓存-SqlCacheDependency类
- 重新过一遍ASP.NET 2.0(C#)(4) - Cache&SqlCacheDependency(缓存和SqlCacheDependency特性)(转帖)
- SqlCacheDependency asp.net 页面缓存
- SqlCacheDependency
- SqlCacheDependency
- SqlCacheDependency
- SqlCacheDependency 基于表的缓存应用
- SqlCacheDependency 类在 ASP.NET 中缓存
- SQL数据缓存依赖 [SqlServer | Cache | SqlCacheDependency ]
- 在作缓存时使用SqlCacheDependency
- SQL数据缓存依赖 [SqlServer | Cache | SqlCacheDependency ]
- SqlCacheDependency:asp.net SQL缓存依赖
- sqlCachedependency【数据缓存依赖】 的使用
- SQL数据缓存依赖 [SqlServer | Cache | SqlCacheDependency ]
- asp.net Sql缓存依赖(SqlCacheDependency)简介
- 如何去掉去掉VC++的安全警告提示
- Spring学习一之IOC工作原理 3
- lucene 3.5 例子
- Oracle 数据文件 实际使用量 计算说明
- JS打印相关内容
- 缓存+SqlCacheDependency(一)
- 2012最炙手可热的10项IT技术——相对应的技术书
- 使用 sql、 javascript 按字节截取、计算中英文混合字符串字节数
- 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(1月16日-2月5日)
- Spring学习一之IOC工作原理 4
- SRMS 531 DIV1
- GotGit笔记1
- apt-get是一条linux命令
- SQL中的接连