Cache缓存,怎么实现与数据库同步? Cache缓存,怎么实现与数据库同步? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果数据库是SQL Server,可以使用SqlDependency进行缓存:http://www.cnblogs.com/tuyile006/archive/2010/02/01/1660910.html 使用SQLDependency缓存依赖,以下是一个推SQL缓存依赖的例子,当数据库更新后缓存会自动更新void Page_Load(){ DataTable movies=(DataTable)Cache["Movie"]; if(movie=null) { SqlDataAdapter adpter=new SqlDataAdatper("Select * From Movie",sqlConnection); SqlCacheDependency sqlDepend=new SqlCacheDependency(adapter.SelectCommand); movies=new DataTable(); //注意必须在adpter.Fill()前先建立SqlCacheDependency,否则无效 adpter.Fill(movies); Cache.Insert("Movie",movies,sqlDepend); }} 如果系统的数据修改都是经过你的程序处理的,其实不需要任何数据库支持就能处理数据同步。比如我们使用 Cache["abc最后写入时间"]=DateTime.Now.Ticks;来作为所有关于abc类型数据的缓存刷新key,那么在将一个abc类的对象放入Cache时写: Cache.Insert(key,data,new CacheDependency(null,new string[]{"abc最后写入时间},...,...);这样就能在前一个Cache数据被修改时自动通知后面的缓存数据清空。于是,在你更新abc这类数据时,记得再写上面代码,就能通知整个系统中所有(也许有上千个)abc相关的数据缓存都清空。这不需要任何数据库系统支持,在你的系统内部实现就行。这需要你的公司自己有一个.net方面的架构设计师,在自己的公司的产品中能够把握、督导整个开发团队。 SqlCacheDepency很时髦,所以我能理解很多人对他印象深刻。但是,其实Cache、CacheDepandency这个东西远在SqlCacheDepency之前几年的asp.net中就已经实现了。你甚至可以继承CacheDependency类型而创造自己的缓存依赖系统(尽管lz的问题很简单根本不需要继承和创造新东西)。因此,用好CacheDependency,已经很好了! 恩,应该是少写了一个)号。Cache.Insert(key,data,new CacheDependency(null,new string[]{"abc最后写入时间},...,...);改为Cache.Insert(key,data,new CacheDependency(null,new string[]{"abc最后写入时间}),...,...);仔细看看CacheDependency中关于依赖其它Cache单元来实例化它的做法。这也许很少引起人的注意,但是其实是用一个单元来自动化地指挥其它成百上千个单元缓存的关键。 关于用泛型比较器对数据集进行排序的请教,小弟先感谢前辈了! 请帮忙看下这个程序有什么问题 请问C#如何调用TC编译器。。 Ubuntu的安装问题 动太创建系统类 WinForm 的正则表达式.在线等~请各位帮忙 如何计算渐变色中某一点的具体颜色 IssueVIsion C#版本 一个烦死人的问题 sendinput()能不能向指定坐标发送点击? net remoting中二进制传输问题 用C#做的windows NT服务在重启电脑时可以正确执行,但在注销后就不能执行了.有没有办法在注销后也启动这个服务?
http://www.cnblogs.com/tuyile006/archive/2010/02/01/1660910.html
void Page_Load()
{
DataTable movies=(DataTable)Cache["Movie"];
if(movie=null)
{
SqlDataAdapter adpter=new SqlDataAdatper("Select * From Movie",sqlConnection);
SqlCacheDependency sqlDepend=new SqlCacheDependency(adapter.SelectCommand);
movies=new DataTable();
//注意必须在adpter.Fill()前先建立SqlCacheDependency,否则无效
adpter.Fill(movies);
Cache.Insert("Movie",movies,sqlDepend);
}
}
Cache["abc最后写入时间"]=DateTime.Now.Ticks;
来作为所有关于abc类型数据的缓存刷新key,那么在将一个abc类的对象放入Cache时写:
Cache.Insert(key,data,new CacheDependency(null,new string[]{"abc最后写入时间},...,...);
这样就能在前一个Cache数据被修改时自动通知后面的缓存数据清空。于是,在你更新abc这类数据时,记得再写上面代码,就能通知整个系统中所有(也许有上千个)abc相关的数据缓存都清空。这不需要任何数据库系统支持,在你的系统内部实现就行。这需要你的公司自己有一个.net方面的架构设计师,在自己的公司的产品中能够把握、督导整个开发团队。
仔细看看CacheDependency中关于依赖其它Cache单元来实例化它的做法。这也许很少引起人的注意,但是其实是用一个单元来自动化地指挥其它成百上千个单元缓存的关键。