【问题标题】:Can I override a list value with a new list, natively in Redis?我可以在 Redis 中使用新列表覆盖列表值吗?
【发布时间】:2018-10-18 04:20:40
【问题描述】:

我想在 Redis 中使用 list data type,但我想简单地用一个值覆盖/设置列表,而不是以推送/弹出方式与之交互。

对于我的业务案例,我需要列表的可查询性质,但需要设置/覆盖整个列表。

这可以用原生 Redis 命令实现吗?

(不是线程安全的,但我可以删除密钥然后使用LPUSH)。如果需要,也许可以将其包装在 Lua 脚本中。

【问题讨论】:

    标签: redis


    【解决方案1】:

    我认为这是不可能的。获得安全且出色的解决方案的最佳选择是使用 Lua 脚本或事务,以确保它作为原子操作执行。一种可能的选择是:

    MULTI
    DEL my_list
    RPUSH my_list "A" "B" "C"
    EXEC
    

    如果您对密钥使用过期时间,则在删除它之前,您可以使用TTL my_list 读取剩余的过期时间。

    【讨论】:

    • 我无法对此进行测试 - 因为我对代码采取了不同的方向,但将其标记为答案,因为它确认没有内置本机功能,并且 Lua需要使用脚本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 2020-12-29
    • 2016-11-14
    • 2012-01-15
    • 2014-09-08
    • 2012-11-03
    相关资源
    最近更新 更多