分布式数据库缓存的完美解决方案
一 属性值
数据库的每张表结构 设置updateTime字段
Cache 设置readMapUpdateTime<表名,updateTime>,updateMapUpdateTime<表名,updateTime>的属性值
readMapUpdateTime、updateMapUpdateTime均以表名为关键字,value为表的updateTime
二 读操作
1 Cache不存在
读取数据库后,更新Cache内容,设置readMapUpdateTime为本次操作数据库涉及到表的更新时间。
2 Cache 存在
扫描二维码关注公众号,回复:
2470834 查看本文章
updateMapUpdateTime不存在证明没有更新操作,直接获取Cache的内容。
updateMapUpdateTime存在则判断readMapUpdateTime和updateMapUpdateTime的值
readMapUpdateTime和updateMapUpdateTime的hash相同,表示没有最新的更新操作,返回Cache的内容。
readMapUpdateTime和updateMapUpdateTime的hash不同,表示有最新更新操作,取数据库后,更新Cache内容,设置readMapUpdateTime为本次操作数据库涉及到表的更新时间
三 写操作
更新数据库后,取到本次操作数据库涉及到表的更新时间,保存到updateMapUpdateTime
保证更新数据库和更新updateMapUpdateTime为同一个事务