Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在django中使用缓存进行比较和设置_Python_Django_Google App Engine_Caching - Fatal编程技术网

Python 在django中使用缓存进行比较和设置

Python 在django中使用缓存进行比较和设置,python,django,google-app-engine,caching,Python,Django,Google App Engine,Caching,我看到一段视频,其中解释了多个用户同时覆盖缓存的问题。演讲者建议使用compare and set来解决这个问题() 他提到两种方法 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

我看到一段视频,其中解释了多个用户同时覆盖缓存的问题。演讲者建议使用compare and set来解决这个问题()

他提到两种方法

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缓存中可用吗?或者这是特定的
googleappengine
。有人可以建议如何使用django缓存来实现这一点吗?如果您使用的是通用的django缓存框架,这是不可能的。如果您只使用MemCache,则包含您所需的所有内容

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


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

您想解决什么问题?你应该在这里解释视频,并将其链接起来。极有可能你会在GAE和其他地方使用memcached,所以同样的功能也会可用,但是如果没有更多的信息,很难说。