Cache Aside(旁路缓存)
写:先是更新 DB ,然后直接将 key 从 cache 中删除,然后由 DB 驱动缓存数据的更新
读:是先读 cache,如果 cache 没有,则读 DB,同时将从 DB 中读取的数据回写到 cache。
适合场景:如果没有专门的存储服务,同时是对所有数据一致性要求比较高的业务,或者是缓存数据更新比较复杂的业务,这些情况都比较适合使用
Read/Write Through(读写穿透)
写:cache存在,则一起跟新cache和DB;cache不存在,则只更新DB
读:是先读 cache,如果 cache 没有,通过缓存服务加载+写入cache
场景:需要由数据存储服务来管理 cache 和 DB 的读写,增加隔离性。更适合用于有冷热区分的数据。
与前Cache Aside相比,在进行写操作时,如果 cache 中没有数据则不更新,有缓存数据才更新,内存效率更高。
Write Behind Caching(异步缓存写入)
写:业务只更新缓存数据,DB数据根据缓存服务的数据来异步更新
读:是先读 cache,如果 cache 没有,通过缓存服务加载+写入cache
场景:非常适合一些变更特别频繁,但对一致性要求不高的业务,或者一些可以写请求合并的业务,比如计数业务。