Redis 缓存怎么与数据库进行数据同步

Redis 缓存怎么与数据库进行数据同步,第1张

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

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

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

在前面说到了数据的备份,这里我们试着去探讨备份的机制,加入数据库在A时间备份,在A时间向后的2个小时出现了问题,那么A时间后的2个小时数据就已经没有了,所以备份的机制就显得比较重要了。

工具/原料sqlyog1首先我们需要连接到我们自己的mysql数据库

2连接数据库成功后,在数据库的控制面板里找到增强工具,点击增强工具在展开的菜单项中点击【数据库同步向导】

3这里不需要做任何的改动直接点击【下一步】就可以了

4我们在左边的来源填写来源数据库,在右边的目标选择同步到的目标数据库,将来源和目标数据库配置完成,点击下一步

5选择同步的模式:选择单向同步模式或者双向同步模式,单向和双向具体的差别,在下面图中说的比较详细,这里我就不多做描述了。

6接着选择需要同步的数据表,将需要同步的表名前面勾选上

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

}

}


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

原文地址:https://54852.com/sjk/6460092.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存