var*_*tec 5 python django memcached atomic count
我正在尝试在Django缓存中进行原子增加或创建操作.我正在使用memcache作为后端.Memcache客户端的incr_async()功能需要initial_value参数.意思是:
如果密钥尚未存在于缓存中并且您指定了initial_value,则密钥的值将设置为此初始值,然后递增.
但是,我不知道如何在Django中执行此操作,因为cache.incr()文档说:
如果尝试递增或递减不存在的缓存键,则会引发ValueError.
我当然可以这样做:
cache.add(key,initial_value)
cache.incr(key)
Run Code Online (Sandbox Code Playgroud)
但这不是原子的,可能导致竞争条件.
有没有办法绕过这个,这将保持操作的原子性?
据我所知 Django 的缓存 API 不支持这个。您必须下拉到 memcache API 并直接执行此操作:
from django.core.cache import cache
client = cache._client # <--direct reference to memcached.Client object
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1387 次 |
| 最近记录: |