认识常见中间件-redis(三)-redis缓存更新策略

  redis缓存更新策略主要有三种:Cache Aside Pattern、Read/Write Through Pattern、Write Behind Caching Pattern

Cache Aside Pattern(旁路缓存)

  Cache Aside策略是最常用的,应用程序直接与「数据库、缓存」交互,并负责对缓存的维护,该策略又可以细分为「读策略」和「写策略」

  写策略:先更新数据库中的数据,再删除缓存中的数据

  读策略:如果读取的数据命中了缓存,则直接返回数据;如果读取的数据没有命中缓存,则从数据库中读取数据,然后将数据写入到缓存,并且返回给用户。

   其中需要注意的是写策略为什么先更新数据库 再删除缓存中的数据,这是因为缓存的写入通常要远远快于数据库的写入,不容易出现缓存和数据库的数据不一致性的问题。这种策略适合读多写少的情况。

Read/Write Through Pattern(读穿 / 写穿)策略

  缓存与数据库整合为一个服务,由服务来维护一致性。调用者调用该服务,无需关心缓存一致性问题。应用程序只和缓存交互,不再和数据库交互,而是由缓存和数据库交互。

  Read Through 策略:先查询缓存中数据是否存在,如果存在则直接返回,如果不存在,则由缓存组件负责从数据库查询数据,并将结果写入到缓存组件,最后缓存组件将数据返回给应用。

  Write Through 策略:当有数据更新的时候,先查询要写入的数据在缓存中是否已经存在:

  • 如果缓存中数据已经存在,则更新缓存中的数据,并且由缓存组件同步更新到数据库中,然后缓存组件告知应用程序更新完成
  • 如果缓存中数据不存在,直接更新数据库,然后返回

Write Behind Caching Pattern(写回)策略

  调用者只操作缓存,由其他线程异步的将缓存数据持久化到数据库,保证最终一致。

  实际上,这种策略也不能应用到我们常用的数据库和缓存的场景中,因为 Redis 并没有异步更新数据库的功能

  这种策略适合于写多读少的情况,CPU 的缓存、操作系统中文件系统的缓存都使用了这种策略。

猜你喜欢

转载自blog.csdn.net/weixin_43839871/article/details/130781013