缓存更新的几种方法------ Read/Write Through Pattern| 青训营笔记

596 阅读2分钟

第二种缓存读写方法 -------- Read/Write Through Pattern(读写穿透)

在Cache Aside模式中,我们需要同时操作数据库和缓存,以保持二者间数据的同步。而在Read/Write Through模式下,则简单很多。我们只需对缓存服务进行读、写即可。由缓存服务内部实现与数据库数据的同步。换言之,在该模式下可以将缓存服务视为数据库的门面/代理。典型地,Ehcache支持该缓存模式

Read/Write Through Pattern 中服务端把 cache 视为主要数据存储,从中读取数据并将数据写入其中。cache 服务负责将此数据读取和写入 DB,从而减轻了应用程序的职责。

写(Write Through)

先查询缓存,若未命中缓存则直接更新数据库,否则如果命中缓存则更新缓存,然后由缓存同步更新到数据库中。

image.png

读(Read Through):

  • 从缓存中读取数据,若命中则返回。
  • 若未命中则先从数据库加载,写入到缓存后返回响应

Read Through 套路就是在查询操作中更新缓存,也就是说,当缓存失效的时候(过期或LRU换出),Cache Aside是由调用方负责把数据加载入缓存,而Read Through则用缓存服务自己来加载,从而对应用方是透明的。

Read-Through Pattern 实际只是在 Cache-Aside Pattern 之上进行了封装。在 Cache-Aside Pattern 下,发生读请求的时候,如果 cache 中不存在对应的数据,是由客户端自己负责把数据写入 cache,而 Read Through Pattern 则是 cache 服务自己来写入缓存的,这对客户端是透明的。

缺陷 :首次请求数据一定不存在 cache 的问题

解决办法:可以将热点数据可以提前放入 cache 中。

该种模式需要提供数据库的handler,开发较为复杂。