0

複数のユーザーが同時にキャッシュを上書きする問題を説明しているビデオを見つけました。講演者はこれに対抗するために比較と設定を使用することを提案しています ( http://www.udacity.com/wiki/CS253%20Unit%206?course=cs253 #cas )。

彼は2つの方法に言及しています

gets(key) → value, unique
cas(key, value, unique) → True/False

from google.appengine.api import memcache

val, unique = memcache.gets(key)
r = memcache.cas(key, newval, unique)
while r == False:
    unique, val = memcache.gets(key)
    r = memcache.cas(key, newval, unique)

このようなものはで利用できますdjango cacheか? またはこれはgoogleappengine特定のものですか?誰かがこれを行う方法を提案できますかdjango cache

4

1 に答える 1

1

汎用の Django キャッシング フレームワークを使用している場合、これは不可能です。MemCache のみを使用している場合は、Django Memcache に関するこの質問: Compare and Setに必要なすべてが含まれています。

ただし、CAS は複数のユーザーが同じキャッシュ値を設定する問題を解決しますが、これはトラフィックの多い環境でのみ問題になることに注意してください。キャッシュの欠落と更新が同時に 1 か月に 1 ~ 2 回発生する場合は、CAS を無視した方がよいでしょう。

キャッシュされた値の計算に非常にコストがかかる場合は、結果を計算してキャッシュに格納し、キャッシュの有効期限が切れる直前に実行する別のバックグラウンド タスクを考えることもできます。この場合、ユーザーがキャッシュ ミスを経験することはなく、CAS 全体の問題は無関係になります。

于 2012-11-14T10:43:22.240 に答える