数据库发生变化,怎么及时更新缓存

数据库发生变化,怎么及时更新缓存,第1张

您好,这样的: 这种writer-reader架构,一般思路是在缓存更新阶段由writer来解决一致性问题,当数据库数据变化时,同步更新redis并确保缓存更新成功。 作为完整性判断,可以不检查全部的属性,而对数据使用一个自增的版本号(或时间戳)来判断是否最新。 作为后置的检测,可以优化来降低扫描的代价,如只针对最近一个时间周期内(如10min)数据库中更新过的数据,这个集合应该比较小,去redis中进行检查的代价会比较低。

首先服务器上要加载缓存,其次用定时器+ajax方法,去取某个web服务或者某个ashx等,返回最后一次更新数据的时间,和当前记录的时间比较,如果有不同再去更新整个数据集。

想楼上说的直接用AJAX来定时刷新,Timer读取数据库中的数据都是白白耗费资源,还是自己建立一个缓存依赖比较好。

使用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)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6749853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存