假设我们有一个500TB的键值对数据。我们可以使用2.5TB内存来为将来的请求缓存这些对。这些要求是多么的随意。
The probability of cache hit would be 2.5/500 = 0.5%我知道,如果我们使用LFU驱逐,命中率可能会随着时间的推移而增加,因为随着时间的推移,键将更频繁地留在缓存中,增加缓存命中率。
因此,如果从存储10K QPS读取系统的吞吐量,那么使用缓存将提高0.05%的速率(忽略内存查找时间)。
那么吞吐量将是10,050 QPS。
在这种情况下,使用缓存的效率如何?
我们不需要缓存吗?
更新
我想我搞错了。如果我们有100%命中,那么吞吐量将是1 1MQPS。如果我们有0%命中率,那么吞吐量将是10 10KQPS。
有0.5%的命中率(假设线性关系)
(0.5*(1M-10K)/100)+10K = 14950 QPS 这是50%的吞吐量增加。
发布于 2019-06-27 07:05:25
“不知何故随机”是关键。
如果请求确实是随机的,那么缓存就不太可能起作用。你的逻辑是正确的。但在实际系统中,事实证明许多数据存储都有不统一的、高度相关的访问模式。
这仍然适用于大量的数据。不管总共有多少数据。它只是重要的是,有多少是经常需要的。
编辑更新没有意义。你在那里的平均速度,但你需要平均的操作时间。
https://stackoverflow.com/questions/56785561
复制相似问题