gpt4 book ai didi

redis - 仅当 key 存在时如何重新分配hset

转载 作者:可可西里 更新时间:2023-11-01 11:14:31 25 4
gpt4 key购买 nike

我使用redis来缓存我的网络博客。我的文章有一个字段“checked”,如果这个字段在数据库中发生变化,我也需要将新值设置为redis,这是代码

if redis_conn.exists("article"):
redis_conn.hset("article", "checked",1)

看起来还可以,但是如果article key在exists之后hset之前过期,就会出现一些问题。article key只会有一个字段被选中,其他字段如title,content等...都会消失。

如何仅当 key 存在时才进行hset,如果 key 已过期则什么也不做。

最佳答案

您可以为此使用 Lua 脚本,即(伪 NodeJS):

redis_conn.eval("if redis.call('EXISTS', KEYS[1])==1 then redis.call('HSET', KEYS[1], ARGV[1], ARGV[2]) end", 1, "article", "checked", 1)

服务器端 Lua 脚本是原子的,因此您可以放心, key 不会在两次调用之间过期。

注意:Redis 确实有 HSETNX命令,但不是 HSETEX 命令,这显然是您要查找的内容。

关于redis - 仅当 key 存在时如何重新分配hset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55881720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com