作者回复: 👍
作者回复: 好滴,我关注一下~
作者回复: 是的 所以解决的办法需要权衡一致性和性能
作者回复: 否则缓存块就可能永远是脏的了
作者回复: 是的
作者回复: 这种情况下,在更新数据库之前就要加锁
作者回复: 1. 是在更新数据库前加锁,锁的粒度是大了一些
2. 确实是更偏重底层开发
作者回复: 这样确实是一个比较好的方式,只是会稍微复杂
作者回复: 会的,这就是狗桩效应嘛~
作者回复: 是有这个问题,比如pagecache在机器掉电之后就都是数据了。一个办法是将写入缓存的操作写入log里,类似lsm树的write ahead log
作者回复: write back策略其实不算数据库和mc之间的策略,而是计算机体系结构中的策略,比如磁盘文件的缓存。它的完整读策略是这样的:如果缓存命中,则直接返回;如果缓存不命中,则重新找一个缓存块儿,如果这个缓存块儿是脏的,那么写入后端存储,并且把后端存储中的数据加载到缓存中;如果不是脏的,那么就把后端存储中的数据加载到缓存,然后标记缓存非脏。
是我的讲述不太清晰,感谢你的提问
作者回复: 是的 这样只能更新缓存,然后使用分布式锁来控制
作者回复: 是的,可以加分布式锁
作者回复: 是的
作者回复: 指的是缓存使用的那块内存有未被刷新到后端存储中的数据,就认为是脏的
作者回复: 这个读缓存想表达的意思是由缓存将数据加载到缓存中的
作者回复: write back策略其实不算数据库和mc之间的策略,而是计算机体系结构中的策略,比如磁盘文件的缓存。它的完整读策略是这样的:如果缓存命中,则直接返回;如果缓存不命中,则重新找一个缓存块儿,如果这个缓存块儿是脏的,那么写入后端存储,并且把后端存储中的数据加载到缓存中;如果不是脏的,那么就把后端存储中的数据加载到缓存,然后标记缓存非脏。
是我的讲述不太清晰,感谢你的提问
作者回复: 1. 后面有写明
2. 是的 但是读后会将缓存标记为不脏,在读多些少的场景下,不会增加很多