缓存问题
1、常用的缓存有 :
Cache Aside:缓存中无数据,从数据库中读取,读取完成后返回用户并加入缓存。
存在的问题是:如果两个操作,一个读操作,缓存未命中,从数据读取数据,加入缓存。这是在一个写操作:更新了数据,清空了缓存。
但是第一个读操作的再把老数据写入数据库。就造成了脏数据。
Read-throug:当应用系统向缓存系统请求数据时(例如使用key=x向缓存请求数据);
如果缓存中并没有对应的数据存在(key=x的value不存在),缓存系统将向底层数据源的读取数据,检索数据后,缓存会自行更新并将数据返回给调用应用程序。
如果数据在缓存中存在(命中key=x),则直接返回缓存中存在的数据。这就是所谓的Read-throug。
Write-Through
当数据发生更新的时候,先去Cache里面进行更新,如果命中了,则先更新缓存再由Cache方来更新database。如果没有命中的话,就直接更新Cache里面的数据。
Write-Behind :先将数据写入到缓存里面,然后再异步的写入到database中进行数据同步。
这样的设计既可以直接的减少我们对于数据的database里面的直接访问,降低压力,同时对于database的多次修改可以进行合并操作,极大的提升了系统的承载能力。
但是这种模式处理缓存数据具有一定的风险性,例如说当cache机器出现宕机的时候
常用的缓存问题及解决方案
最新推荐文章于 2022-04-29 17:34:34 发布