键值缓存
· 阅读需 4 分钟
KV 缓存就像一个巨大的哈希映射,用于减少数据访问的延迟,通常通过
- 将来自慢速且便宜介质的数据转移到快速且昂贵的介质上。
- 从基于树的数据结构的
O(log n)
索引转为基于哈希的数据结构的O(1)
进行读写。
有各种缓存策略,如读穿/写穿(或写回)和旁路缓存。总体而言,互联网服务的读写比为 100:1 到 1000:1,因此我们通常会优化读取。
在分布式系统中,我们根据业务需求和上下文选择这些策略,并在 CAP 定理 的指导下进行选择。
常规模式
- 读取
- 读穿:客户端通过缓存层从数据库读取数据。当读取命中缓存时,缓存返回;否则,它从数据库获取数据,缓存后再返回值。
- 写入
- 写穿:客户端写入缓存,缓存更新数据库。缓存在完成数据库写入后返回。
- 写后 / 写回:客户端写入缓存,缓存立即返回。在缓存写入的背后,缓存异步写入数据库。
- 绕过写入:客户端直接写入数据库,绕过缓存。