为了保证缓存和数据库一致性,说说只读缓存的方案?

  • 有数据新增时,会直接写入数据库;

  • 有数据删改时,就需要把只读缓存中的数据标记为无效。这样一来,应用后续再访问这些增删改的数据时,因为缓存中没有相应的数据,就会发生缓存缺失。此时,应用再从数据库中把数据读入缓存,这样后续再访问数据时,就能够直接从缓存中读取了。

建议:优先使用先更新数据库再删除缓存的方法。

原因:先删除缓存值再更新数据库,有可能导致请求因缓存缺失而访问数据库,给数据库带来压力;如果业务应用中读取数据库和写缓存的时间不好估算,那么,延迟双删中的等待时间就不好设置。

总结见下图: