2023-04-14 03:11:33
Redis的延迟删除主要通过“延时双删”策略实现,主动更新则依赖Cache Aside、Read/Write Through等模式,二者共同用于维护缓存与数据库的一致性。
延迟删除:延时双删策略延迟删除的核心是“延时双删”,具体步骤如下:
目的:通过两次删除避免并发操作导致的数据不一致。例如,第一次删除后,若其他线程查询缓存未命中并从数据库读取旧数据写入缓存,第二次删除可彻底清除这些脏数据。
主动更新:同步缓存与数据库主动更新策略在数据库数据变更时同步更新Redis缓存,常见方案包括:
Cache Aside Pattern:
操作流程:调用者在更新数据库时删除缓存(而非直接更新),后续查询时再更新缓存。
优势:减少无效写操作(如数据库更新100次,缓存只需删除1次)。
问题:需处理操作顺序问题(先删缓存再更新数据库,或先更新数据库再删缓存),均可能导致脏数据。
Read/Write Through Pattern:
操作流程:缓存与数据库整合为一个服务,调用者直接操作该服务,由服务维护一致性。
问题:服务维护复杂,市面上无完善解决方案。
Write Behind Caching Pattern:
操作流程:调用者只操作缓存,由异步线程将缓存数据持久化到数据库。
问题:若异步线程未完成持久化时Redis宕机,会导致数据丢失。