你是如何更新缓存的?看懂这篇缓存读写策略(下)

简介: 你是如何更新缓存的?看懂这篇缓存读写策略

2 Read/Write Through Pattern


上面的Cache Aside,应用代码需要维护两个数据存储,一个是缓存,一个是数据库,应用程序比较啰嗦。

而Read/Write Through是把更新数据库的操作由缓存自己代理,所以,对于应用层来说,就简单很多。

可理解为,应用认为后端就是一个单一的存储,而存储自己维护自己的Cache。



2.1 Read Through

Read Through 就是在查询操作中更新缓存,也就是说,当缓存失效的时候(过期或LRU换出)


  • Cache Aside是由调用方负责把数据加载入缓存
  • Read Through则用缓存服务自己来加载,从而对应用方是透明的


2.2 Write Through

和Read Through相仿,不过是在更新数据时发生

当有数据更新时



  • 如果没有命中缓存,直接更新数据库,然后返回
  • 如果命中了缓存,则更新缓存,然后再由Cache自己更新数据库(这是一个同步操作)


下图中的Memory可以理解为就是我们例子里的数据库


image.png



3 Write Behind(异步写回)

又叫 Write Back。在更新数据时,只更新缓存,不更新DB,而我们的缓存会异步批量更新DB


优点

  • 让数据的I/O操作飞快无比(因为直接操作内存嘛 )
  • 因为异步,write back还可以合并对同一个数据的多次操作,所以性能的提高是相当可观


缺点


数据不是强一致性的,而且可能会丢失(我们知道Unix/Linux非正常关机会导致数据丢失,就是因为这个事)。


另外,Write Back实现逻辑比较复杂,因为他需要track哪些数据是被更新的,需要刷到持久层。

os的write back会在仅当这个cache需要失效时,才会被真正持久化,比如,内存不够了,或是进程退出了等情况,这又叫lazy write。


比如在向磁盘中写数据时采用的也是这种策略。无论是:



  • os层面的 Page Cache
  • 日志的异步刷盘
  • 消息队列中消息的异步写入磁盘


大多采用了这种策略。因为这个策略在性能优势明显,直接写内存,避免了直接写磁盘造成的随机写。


A write-back cache with write allocation

image.png



目录
相关文章
|
1月前
|
缓存 算法 数据挖掘
深入理解缓存更新策略:从LRU到LFU
【10月更文挑战第7天】 在本文中,我们将探讨计算机系统中缓存机制的核心——缓存更新策略。缓存是提高数据检索速度的关键技术之一,无论是在硬件还是软件层面都扮演着重要角色。我们会详细介绍最常用的两种缓存算法:最近最少使用(LRU)和最少使用频率(LFU),并讨论它们的优缺点及适用场景。通过对比分析,旨在帮助读者更好地理解如何选择和实现适合自己需求的缓存策略,从而优化系统性能。
51 3
|
3月前
|
缓存 Java
Java本地高性能缓存实践问题之Caffeine缓存库中基于时间设置驱逐策略的问题如何解决
Java本地高性能缓存实践问题之Caffeine缓存库中基于时间设置驱逐策略的问题如何解决
|
26天前
|
存储 缓存 监控
利用 Redis 缓存特性避免缓存穿透的策略与方法
【10月更文挑战第23天】通过以上对利用 Redis 缓存特性避免缓存穿透的详细阐述,我们对这一策略有了更深入的理解。在实际应用中,我们需要根据具体情况灵活运用这些方法,并结合其他技术手段,共同保障系统的稳定和高效运行。同时,要不断关注 Redis 缓存特性的发展和变化,及时调整策略,以应对不断出现的新挑战。
62 10
|
22天前
|
Web App开发 缓存 UED
如何设置浏览器的缓存策略?
【10月更文挑战第23天】通过合理地设置浏览器的缓存策略,可以在提高网页性能、减少网络流量的同时,确保用户能够获取到最新的内容,从而提升用户体验和网站的性能优化效果。
64 4
|
23天前
|
存储 消息中间件 缓存
缓存策略
【10月更文挑战第25天】在实际应用中,还需要不断地监控和调整缓存策略,以适应系统的变化和发展。
|
26天前
|
缓存 监控 NoSQL
Redis 缓存穿透及其应对策略
【10月更文挑战第23天】通过以上对 Redis 缓存穿透的详细阐述,我们对这一问题有了更深入的理解。在实际应用中,我们需要根据具体情况综合运用多种方法来解决缓存穿透问题,以保障系统的稳定运行和高效性能。同时,要不断关注技术的发展和变化,及时调整策略,以应对不断出现的新挑战。
43 4
|
1月前
|
存储 缓存 NoSQL
保持HTTP会话状态:缓存策略与实践
保持HTTP会话状态:缓存策略与实践
|
1月前
|
存储 缓存 监控
|
1月前
|
存储 缓存 NoSQL
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
64 4
|
1月前
|
缓存 分布式计算 NoSQL
大数据-47 Redis 缓存过期 淘汰删除策略 LRU LFU 基础概念
大数据-47 Redis 缓存过期 淘汰删除策略 LRU LFU 基础概念
67 2