我的查询结果非常昂贵。它是几个表和地图减少作业的连接。
这在memcached
缓存了15分钟。一旦缓存过期,查询显然会运行,缓存会再次变暖。
但在到期时,thundering herd problem
问题可能会发生。
解决这个问题的一种方法是,我现在就做的是运行一个在第14分钟踢完的计划任务。但不知何故,这看起来对我来说非常不合适。
我喜欢的另一种方法是nginx的proxy_cache_use_stale updating;
机制。
网络服务器/机器继续提供过时的缓存,同时线程在到期时启动并更新缓存。
是否有人将此应用于memcached
方案但我了解这是客户端策略?
如果它有用,我会使用 Django
。
答案 0 :(得分:3)
答案 1 :(得分:1)
你想要http://pypi.python.org/pypi/dogpile/ - 它实现的算法与proxy_cache_use_stale updating
完全相同,甚至可以与memcachd一起使用。