2

在我的代码的一个地方,我使用 django_redis 用锁更新缓存:

from django.core.cache import cache
with cache.lock('hello'):
    # do stuff 

在另一个地方,我使用以下命令检查缓存是否未锁定:

if not cache.get('hello'):
    # do other stuff

但是,当锁定设置时,get调用失败,UnpicklingError: invalid load key, 'f'.为什么会发生这种情况?我究竟做错了什么?

您可以使用此代码段重现此行为:

from django.core.cache import cache
with cache.lock('hello'):
    cache.get('hello') 
4

1 回答 1

2

这不是很明显,但据我了解,您的lock_key情况cache_key一定不一样。例如这段代码:

cache_key = 'hello'
with cache.lock(cache_key):
    cache.get(cache_key)

提高UnpicklingError: invalid load key...

同时这段代码:

cache_key = 'hello'
lock_key = cache_key + '_lock'
with cache.lock(lock_key):
    cache.get(cache_key)

随心所欲地工作。

于 2018-09-24T09:04:27.953 回答