我正在缓存一个方法的结果(显然有它的签名),这样它就不会每次都在我的数据存储上进行复杂的查询。我的缓存工作正常。
我的问题是:
如何在缓存中找到条目的最佳超时值?
缓存中的最佳条目数应该是多少?
我可以改变其他任何变量来改善我的应用程序的性能吗?
假设影响缓存性能的各种因素是变量,并为我提供一个公式来帮助我理解如何优化缓存?
答案 0 :(得分:1)
There are two hard problems in computer science: cache invalidation and naming things。首先,我确定你需要一个缓存。这取决于您使用的数据存储区域(显然是redis)。如果它是传统的RDBMS,那么您最好先确保您的索引策略是紧密的。引入缓存的麻烦在于,在某些时候,从早到晚,以及之后的很多次,你将会得到一个不一致的缓存。缓存失效对于您的数据存储区的更新不具有原子性,因此某些内容会触发无效消息,但无法到达其目标位置,并且您的缓存将过期。所以,在你介绍之前,确定你需要缓存。在缓存超时方面 - 越快越好。一个小时很棒,一天不那么好。如果某些内容不同步,那么它会自行修复,而不是导致持续的问题。此外,如果您正在设置一周或更长时间的缓存超时,那么您的缓存将像数据存储一样开始运行,而且它们都拥有自己的缓存;如果它发生故障并且您必须重建它,那么您将会受到很大的性能影响。所以在这种情况下,少即是多。最后,确保确保并确实为进入缓存的所有内容设置了缓存超时。使用memcache很容易,默认情况下没有到期日期,在这种情况下,你的缓存真的会像数据存储一样开始。不要让这种情况发生;我已经去过那里,等待一周让你的网站恢复并不好玩。