0

我看到一个视频,它解释了多个用户同时覆盖缓存的问题。演讲者建议使用比较和设置来解决这个问题(http://www.udacity.com/wiki/CS253%20Unit%206?course=cs253 #卡斯)。

他提到了两种方法

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 上的这个问题:比较和设置包含您需要的所有内容。

但是,请注意,虽然 CAS 解决了多个用户设置相同缓存值的问题,但这只是在高流量环境中的问题。如果每个月同时发生一次或两次缓存未命中和更新,则最好忽略 CAS。

如果缓存的值计算起来真的很昂贵,您还可以考虑一个单独的后台任务来计算结果,将其存储在缓存中,并在缓存到期之前运行。在这种情况下,您的用户将永远不会遇到缓存未命中并且整个 CAS 问题变得无关紧要。

于 2012-11-14T10:43:22.240 回答