键值缓存有哪些用法?
· 阅读需 3 分钟
KV Cache的本质是为了减少访问数据的延迟。比如,把存在又贵又慢的媒体上的数据库的O(logN)
的读写和复杂的查询,变成存在又快又贵的媒体上的
O(1)
的读写。cache 的设计有很多策略,常见的有 read-through/write-through(or write-back) 和 cache aside.
常见的互联网服务读写比是 100:1 到 1000:1,我们常常对读做优化。
在分布式系统中,这些 pattern 的组合都是 consistency, availability, partition tolerance 之间的 trade-off,要根据你的业务需求具体 选择。
一般的策略
- 读
- Read-through: clients 和 databases 之间加一层 cache layer,clients 不直接访问数据库,clients 通过 cache 间接访问数据库。 读的时候 cache 里面没有东西则从database更新再返回,有则直接返回。
- 写
- Write-through: clients 先写数据到 cache,cache 更新 database,只有 database 最终更新了,操作才算完成。
- write-behind/Write-back: clients 先写数据到 cache,先返回。回头将 cache 异步更新到 database. 一般来讲 write-back 是最快的
- Write-around: client 写的时候绕过 cache 直接写数据库。