【发布时间】:2019-11-09 03:39:29
【问题描述】:
假设我们有一个键值对数据500TB。我们可以使用2.5TB 内存来缓存这些对以供将来的请求使用。这些请求有些随机。
The probability of cache hit would be 2.5/500 = 0.5%
我知道,如果我们使用 LFU eviction,命中率可能会随着时间的推移而增加,因为随着时间的推移,键会更频繁地保留在缓存中,从而提高缓存命中率。
所以,如果系统从存储10K QPS读取的吞吐量,那么使用缓存将提高速率0.05%(忽略内存寻道时间)。
那么吞吐量将是10,050 QPS。
在这种情况下使用缓存的效率如何?
我们应该不使用缓存吗?
更新
我想我这里有一个错误。如果我们有 100% 的命中率,那么吞吐量将是 1MQPS。如果我们的命中率为 0%,那么吞吐量将为 10KQPS。
具有 0.5% 的命中率(假设线性关系)产生于
(0.5*(1M-10K)/100)+10K = 14950 QPS
吞吐量增加了 50%。
【问题讨论】:
标签: caching architecture system-design