1

我正在缓存一个方法的结果(显然带有它的签名),这样它就不会每次都对我的数据存储进行复杂的查询。我的缓存工作正常。

我的问题是:

我应该如何找到缓存中条目的最佳超时值?

缓存中的最佳条目数应该是多少?

我可以更改它们以提高应用程序的性能吗?

将影响缓存性能的各种因素假设为变量,并为我提供一个公式来帮助理解如何优化我的缓存?

4

1 回答 1

1

计算机科学有两个难题:缓存失效和命名事物. 首先,我确定你需要一个缓存。这取决于您使用的是哪种数据存储(显然是 redis)。如果它是一个传统的 RDBMS,那么你最好先确保你的索引策略是严格的。引入缓存的问题在于,在某个时间点,迟早,而且之后很多时候,你会得到一个不一致的缓存。缓存失效对于数据存储的更新不是原子的,因此会触发失效消息但无法到达其目的地,并且您的缓存将过期。所以在你介绍它之前,一定要确定你需要那个缓存。在缓存超时方面 - 越早越好。一个小时很棒,一天少一点。如果某些事情不同步,那么它将自行修复,而不是导致持续的问题。还,如果您将缓存超时设置为一周或更长时间,那么您的缓存将开始像数据存储一样运行;如果它出现故障并且您必须对其进行重建,那么您的性能将受到很大的影响。所以在这种情况下,少即是多。最后,确保您确定并确实为进入缓存的所有内容设置了缓存超时。使用 memcache 很容易默认没有过期日期,在这种情况下,你的缓存真的会开始像数据存储一样工作。不要让这种情况发生;我去过那里,等待一个星期让您的网站恢复并不有趣。重新将受到很大的性能影响。所以在这种情况下,少即是多。最后,确保您确定并确实为进入缓存的所有内容设置了缓存超时。使用 memcache 很容易默认没有到期日期,在这种情况下,您的缓存真的会开始像数据存储一样工作。不要让这种情况发生;我去过那里,等待一个星期让您的网站恢复并不有趣。重新将受到很大的性能影响。所以在这种情况下,少即是多。最后,确保您确定并确实为进入缓存的所有内容设置了缓存超时。使用 memcache 很容易默认没有到期日期,在这种情况下,您的缓存真的会开始像数据存储一样工作。不要让这种情况发生;我去过那里,等待一个星期让您的网站恢复并不有趣。

于 2015-04-19T15:44:56.500 回答