【发布时间】:2011-08-22 11:15:49
【问题描述】:
更新插入(替换)
- 如果存在则更新
- 如果不存在则插入
(使用主键作为管道)
【问题讨论】:
更新插入(替换)
(使用主键作为管道)
【问题讨论】:
“如果存在则更新”是什么意思?标准 Redis SET 命令(SET、MSET、HSET、LSET 等)将更新(覆盖)现有密钥,如果密钥已经存在,或者插入新密钥,如果密钥不存在存在。
听起来你在要求默认行为。
【讨论】:
setnx 或其他包含nx 的命令非常容易(这基本上意味着“如果存在则不存在”)。然后,当您的过期密钥被删除时,您的插入将会发生,但不会在那之前。 --- 也可以使用两个键:一个带有值,一个带有时间戳,并在更新值键之前获取该时间戳。如果你需要它是原子的,可以用 Lua 或 WATCH+EXEC 来完成。 --- 这个问题可能是 stackoverflow 上的问题。
redis 还支持其他数据结构,例如 SET、Sorted SET 和 SET 命令仅适用于字符串值,因为它需要字符串键和字符串值。
【讨论】: