目前大部分高并发系统都是使用redis+mysql数据库来保证高性能,那么更新缓存和更新数据库的流程到底是怎么实现的呢?
目录
类别
实现缓存与数据库的双写一致性大致有四个类别,分别是:
①先更新缓存,再更新数据库
②先更新数据库,再更新缓存
③先删除缓存,再更新数据库
④先更新数据库,再删除缓存
分析
需要考虑两个问题:①更新缓存与删除缓存哪个更合适?②应该先操作数据库还是先操作缓存?
- 更新缓存和删除缓存哪一个更合适?
更新缓存的优点:每一次的数据变化都更新到缓存里面,所以查询命中率较高。
更新缓存的缺点:更新缓存的消耗比较大。频繁的更新缓存,就会影响数据库性能,如果是写频繁的业务场景,那么可能是频繁的更新缓存但是不怎么读取缓存,那更新缓存并没有什么实际意义。
删除缓存的优点:操作简单,直接将缓存的数据删除即可。
删除缓存的缺点:删除缓存,下一次查询会出现未命中的情况,需要从数据库读入到缓存。
综上,删除缓存会更优。
- 应该先操作数据库还是先操作缓存?
首先对比一下先删除缓存