【问题标题】:Why is the nxxx parameter of set() in Jedis exclusive?为什么 Jedis 中 set() 的 nxxx 参数是独占的?
【发布时间】:2014-12-07 23:25:21
【问题描述】:

在 Jedis 中,我想通过一次调用设置一些键和值以及过期时间。

我可以通过 set() 和 expire() 的组合来做到这一点,但它需要两次调用。

我找到了以下方法:

set(final String key, final String value, final String nxxx, final String expx, final long time)

但我必须选择 nx(仅在不存在时设置密钥。)或 xx(仅在已存在时设置密钥。)。

我想涵盖这两种情况。

有什么建议吗?或者有什么理由这样写?

【问题讨论】:

    标签: redis jedis


    【解决方案1】:

    Redis 有一个SETEX 命令,用于设置密钥的过期时间。

    jedis.setex(key, expireAfter, value);
    

    【讨论】:

    • 注意:由于 SET 命令选项可以替换 SETNX、SETEX、PSETEX,因此在未来的 Redis 版本中,这三个命令可能会被弃用并最终被删除。来源 - redis.io/commands/set
    • 因此,如果将其删除,那么这个问题仍然没有答案。请解释...
    • @LoveToCode 如Redis SETEX docs 中所述 > SET mykey value > EXPIRE mykey seconds > SETEX 是原子的,可以通过在 MULTI / EXEC 块中使用前两个命令来重现。因此,它可能是以下 Jedis:java final String key = "foo"; final Transaction t = jedis.multi(); t.set(key, "bar"); // Set the key with the value t.expire(key, 10); // Set it to expire in 10 seconds t.exec(); 但我认为如果 SETEX 被删除,Jedis 会在幕后做出改变。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 2011-07-11
    • 2015-07-07
    相关资源
    最近更新 更多