2012-03-25 16 views
6

非常に高価なクエリの結果があります。それはいくつかのテーブルの結合であり、マップ削減ジョブです。memcached期限切れシナリオで犬の積み重ねや雷を避ける

これはmemcachedに15分間キャッシュされます。キャッシュが期限切れになると、クエリは明らかに実行され、キャッシュは再び暖かくなります。

ただし、有効期限が到来するとthundering herd problemの問題が発生する可能性があります。

この問題を解決する1つの方法は、今は14分に始まるスケジュールされたタスクを実行することです。しかし、どういうわけか、これは私には非常に最適ではないようです。

私が好きな別のアプローチは、nginxのproxy_cache_use_stale updating;メカニズムです。

Webサーバー/マシンは、有効期限が切れた時点でスレッドが起動してキャッシュが更新されている間、古いキャッシュを引き続き配信します。

私はこれがクライアント側の戦略であると理解していますが、誰かがこれをmemcachedシナリオに適用しましたか?

私が恩恵を受ける場合、私はDjangoを使用します。

+0

を見ているかもしれません。私は興味があります、あなたは何を使って終わりましたか? – Seperman

答えて

1

あなたはhttp://pypi.python.org/pypi/dogpile/を望んでいます - それは正確にproxy_cache_use_stale updatingのようなアルゴリズムを実装し、memcachdでも動作します。

+0

これは「スケールアウト」できますか? –

+0

ああ、申し訳ありません - 私は少しあなたを誤解していることが判明しました。 memcachedバックエンドはhttps://bitbucket.org/zzzeek/dogpile.cacheに実装されていることが判明しましたが、それはまだかなりの量が読み込まれているわけではありません。 –

関連する問題