Я хотел бы установить срок действия некоторых хеш-ключей, и если это первый раз, когда hset ключ, я хочу установить срок действия, в противном случае, я предпочитаю сохранить срок действия, который установлен в первый раз .
Поскольку существует огромное количество хеш-ключей, я предпочитаю делать это в конвейере, однако нижеприведенная функция работает не очень хорошо.
Строка pipe.exists(hkey)
возвращает obj для pipe, который всегда равен True, поэтому предложение if всегда идет в одну часть независимо от наличия хеш-ключа.
И мой вопрос: есть ли способ установить срок действия ключа хеша в соответствии с существованием ключа хеша с конвейером?
def test1(hkey, v):
with r.pipeline() as pipe:
# tmp = pipe.exists(hkey)
# pipe.exists(hkey) is a pipe obj, which is always True,
# this line not work as expected and the two lines below it will never be excuted.
if not pipe.exists(hkey):
pipe.hset(hkey, v, v)
pipe.expire(hkey, 3600)
else:
# no matter whether the hash key is exist or not, the if else statment always goes to this line.
pipe.hset(hkey, v, v)
pipe.execute()