在memcached到期场景中避免狗堆或雷鸣般的群体

时间:2012-03-25 07:25:44

标签: django algorithm caching memcached

我的查询结果非常昂贵。它是几个表和地图减少作业的连接。

这在memcached缓存了15分钟。一旦缓存过期,查询显然会运行,缓存会再次变暖。

但在到期时,thundering herd problem问题可能会发生。

解决这个问题的一种方法是,我现在就做的是运行一个在第14分钟踢完的计划任务。但不知何故,这看起来对我来说非常不合适。

我喜欢的另一种方法是nginx的proxy_cache_use_stale updating;机制。

网络服务器/机器继续提供过时的缓存,同时线程在到期时启动并更新缓存。

是否有人将此应用于memcached方案但我了解这是客户端策略?

如果它有用,我会使用 Django

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

你想要http://pypi.python.org/pypi/dogpile/ - 它实现的算法与proxy_cache_use_stale updating完全相同,甚至可以与memcachd一起使用。