Cache缓存,怎么实现与数据库同步

Cache缓存,怎么实现与数据库同步,第1张

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

}

}

这种writer-reader架构,一般思路是在缓存更新阶段由writer来解决一致性问题,当数据库数据变化时,同步更新redis并确保缓存更新成功。

作为完整性判断,可以不检查全部的属性,而对数据使用一个自增的版本号(或时间戳)来判断是否最新。

作为后置的检测,可以优化来降低扫描的代价,如只针对最近一个时间周期内(如10min)数据库中更新过的数据,这个集合应该比较小,去redis中进行检查的代价会比较低。


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

原文地址: https://outofmemory.cn/sjk/9934845.html

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

发表评论

登录后才能评论

评论列表(0条)

保存