跳至主要內容

Redis-缓存读写策略

HFwas约 414 字大约 1 分钟

Redis-缓存读写策略

  • 旁路缓存
  • 缓存击透
  • 异步缓存写入

旁路缓存

读取

  • 判断是否在缓存当中,如果在,获取缓存数据返回
  • 如果不在缓存
  • 读取数据库返回
  • 将数据库数据加到缓存当中

  • 更新数据库
  • 删除缓存

存在问题

在写的时候为什么不先删除缓存再更新数据库?

  • 会存在缓存和数据库不一致的问题,存在一种情况:request-a在更新数据库,request-b在获取数据,缓存不存在,会读取数据库数据,将数据加到缓存当中,然后返回。此时clienta更新数据库完成,数据库当中的数据和request-b返回的缓存数据可能就会存在不一致的情况

读写穿透

读取

  • 判断缓存是否存在,如果存在,直接返回
  • 如果不存在,由缓存服务读取数据库数据,写入缓存,然后返回

  • 判断缓存当中是否存在,如果不存在,由cache服务更新db
  • 判断缓存当中是否存在,如果存在,cache服务自己更新cache,然后更新db,同步更新cache和db

异步缓存写入

读取

  • 读取和读写穿透保持一致

  • 和读写穿透唯一区别是,读写穿透是同步写入db和cache,而异步缓存写入是先更新cache,异步更新db

总结

  • 实际工作当中运用最多的其实就是旁路缓存,而另外两种读写穿透和异步缓存写入其实用的不多
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3