Caching 对于海量数据,缓存值得吗?

Caching 对于海量数据,缓存值得吗?,caching,architecture,system-design,large-scale,Caching,Architecture,System Design,Large Scale,假设我们有一个500TB的键值对数据。我们可以使用2.5TB内存来缓存这些对,以备将来的请求。请求是随机的 The probability of cache hit would be 2.5/500 = 0.5% 我知道,如果我们使用LFU逐出,命中率可能会随着时间的推移而增加,因为随着时间的推移,更频繁的键将保留在缓存中,从而提高缓存命中率 因此,如果系统从存储器读取的吞吐量10K QPS,那么使用缓存将使速率提高0.05%(忽略内存寻道时间) 然后吞吐量将是10050qps 在这种情况下使

假设我们有一个
500TB的键值对数据。我们可以使用
2.5TB
内存来缓存这些对,以备将来的请求。请求是随机的

The probability of cache hit would be 2.5/500 = 0.5%
我知道,如果我们使用LFU逐出,命中率可能会随着时间的推移而增加,因为随着时间的推移,更频繁的键将保留在缓存中,从而提高缓存命中率

因此,如果系统从存储器读取的吞吐量
10K QPS
,那么使用缓存将使速率提高
0.05%
(忽略内存寻道时间)

然后吞吐量将是
10050qps

在这种情况下使用缓存的效率如何

我们应该没有缓存吗

更新

我想我弄错了。如果我们有100%命中率,那么吞吐量将是1MQPS。如果命中率为0%,则吞吐量将为10KQPS

具有0.5%的命中率(假设线性关系)在

(0.5*(1M-10K)/100)+10K = 14950 QPS 
这意味着吞吐量增加了50%。

“某种程度上随机”是关键

如果请求确实是随机的,那么缓存不太可能起作用。你的逻辑是正确的。但在实际系统中,许多数据存储具有非统一、高度相关的访问模式

这仍然适用于大量数据。不管总共有多少数据。重要的是,经常需要的东西有多少

[编辑]
更新没有意义。你在那里平均速度,但你需要平均操作时间

您好@MSalters,谢谢您的回答。你能检查一下我的更新吗。如果是这样的话,你会怎么想?谢谢@MSalters。你能帮我填一下号码吗。