3 种缓存更新策略是怎样的?

本文介绍了缓存更新的三种策略:Cache Aside、Read/Write Through和Write Back。Cache Aside是最常用,先更新数据库再删除缓存以避免并发时的数据不一致。Read/Write Through策略中,缓存组件直接负责数据库交互。Write Back策略则只更新缓存,数据丢失风险较高,常见于计算机系统中。

天跟大家聊聊,常见的缓存更新策略。

  • Cache Aside(旁路缓存)策略;
  • Read/Write Through(读穿 / 写穿)策略;
  • Write Back(写回)策略;

实际开发中,Redis 和 MySQL 的更新策略用的是 Cache Aside,另外两种策略主要应用在计算机系统里。

Cache Aside(旁路缓存)策略

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

写策略的步骤:

  • 先更新数据库中的数据,再删除缓存中的数据。

读策略的步骤:

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

注意,写策略的步骤的顺序顺序不能倒过来,即 不能先删除缓存再更新数据库 ,原因是在「读+写」并发的时候,会出现缓存和数据库的数据不一致性的问题。

举个例子,假设某个用户的年龄是 20,请求 A 要更新用户年龄为 21,所以它会删除缓存中的内容。这时,另一个请求 B 要读取这个用户的年龄,它查询缓存发现未命中后,会从数据库中读取到年龄为 20,并且写入到缓存中,然后请求 A 继续更改数据库,将用户的年龄更新为 21。

最终,该用户年龄在

为了优化 SSD 缓存策略以降低内存占用,可以采取以下几种方法: ### 1. 调整缓存替换策略 选择合适的缓存替换策略对于降低内存占用至关重要。常见的缓存替换策略包括 LRU(最近最少使用)、LFU(最不经常使用)和 FIFO(先进先出)。这些策略可以根据实际应用场景选择,以减少不必要的缓存占用[^1]。 ```python # 示例代码:实现一个简单的 LRU 缓存机制 class LRUCache: def __init__(self, capacity): self.cache = {} self.capacity = capacity self.order = [] def get(self, key): if key in self.cache: self.order.remove(key) self.order.append(key) return self.cache[key] return -1 def put(self, key, value): if key in self.cache: self.order.remove(key) elif len(self.cache) >= self.capacity: del self.cache[self.order.pop(0)] self.cache[key] = value self.order.append(key) ``` ### 2. 优化缓存大小 根据实际需求调整缓存的大小,避免过度分配内存资源。可以通过监控缓存命中率和 miss 率来动态调整缓存大小,确保在保证性能的同时最小化内存占用。 ### 3. 使用分层缓存缓存分为多层,例如将热数据存储在高速缓存中,而冷数据存储在低速缓存中。这种方法可以有效利用有限的内存资源,同时保持较高的缓存命中率。 ### 4. 启用压缩和去重 对缓存中的数据进行压缩和去重处理,可以显著减少内存占用。这对于存储大量重复或冗余数据的应用场景特别有效。 ### 5. 调整操作系统级别的 SSD 缓存设置 在 Windows 操作系统中,可以通过设备管理器调整 SSD 的缓存策略。例如,可以选择启用或禁用写缓存,以平衡性能和数据安全性。具体步骤如下: - 打开设备管理器。 - 找到并右键点击你的 SSD 设备。 - 选择“属性”。 - 在“策略”选项卡中,选择“更好的性能”或“启用写缓存”等选项,根据实际需求进行调整[^2]。 ### 6. 利用 SSD 的字节寻址特性 结合成本效益高的字节寻址 DRAM 和 SSD,作为 CPU 可访问的缓存。这种方法可以在一定程度上减少内存占用,同时保持较高的访问速度[^1]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值