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中进行检查的代价会比较低。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)