SET key value [EX seconds] [PX milliseconds] [NX|XX]

可用版本: >= 1.0.0
时间复杂度: O(1)

将字符串值 value 关联到 key 。

如果 key 已经持有其他值, SET 就覆写旧值, 无视类型。

当 SET 命令对一个带有生存时间(TTL)的键进行设置之后, 该键原有的 TTL 将被清除。

可选参数

从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改:

  • EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等同于执行 SETEX key seconds value 。
  • PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。 执行 SET key value PX milliseconds 的效果等同于执行 PSETEX key milliseconds value 。
  • NX : 只在键不存在时, 才对键进行设置操作。 执行 SET key value NX 的效果等同于执行 SETNX key value 。
  • XX : 只在键已经存在时, 才对键进行设置操作。

Note

因为 SET 命令可以通过参数来实现 SETNX 、 SETEX 以及 PSETEX 命令的效果, 所以 Redis 将来的版本可能会移除并废弃 SETNX 、 SETEX 和 PSETEX 这三个命令。

返回值

在 Redis 2.6.12 版本以前, SET 命令总是返回 OK 。

从 Redis 2.6.12 版本开始, SET 命令只在设置操作成功完成时才返回 OK ; 如果命令使用了 NX或者 XX 选项, 但是因为条件没达到而造成设置操作未执行, 那么命令将返回空批量回复(NULL Bulk Reply)。

代码示例

对不存在的键进行设置:

redis> SET key "value"
OK redis> GET key
"value"

对已存在的键进行设置:

redis> SET key "new-value"
OK redis> GET key
"new-value"

使用 EX 选项:

redis> SET key-with-expire-time "hello" EX 10086
OK redis> GET key-with-expire-time
"hello" redis> TTL key-with-expire-time
(integer) 10069

使用 PX 选项:

redis> SET key-with-pexpire-time "moto" PX 123321
OK redis> GET key-with-pexpire-time
"moto" redis> PTTL key-with-pexpire-time
(integer) 111939

使用 NX 选项:

redis> SET not-exists-key "value" NX
OK # 键不存在,设置成功 redis> GET not-exists-key
"value" redis> SET not-exists-key "new-value" NX
(nil) # 键已经存在,设置失败 redis> GEt not-exists-key
"value" # 维持原值不变

使用 XX 选项:

redis> EXISTS exists-key
(integer) 0 redis> SET exists-key "value" XX
(nil) # 因为键不存在,设置失败 redis> SET exists-key "value"
OK # 先给键设置一个值 redis> SET exists-key "new-value" XX
OK # 设置新值成功 redis> GET exists-key
"new-value"

最新文章

  1. iedriverserver使用报错
  2. psql-04数据类型(2)
  3. C# 非模式窗体show()和模式窗体showdialog()的区别(转)
  4. json 筛选数据 $.grep过滤数据
  5. 【vc】1_Windows程序内部运行机制
  6. iOS基础 - Quartz 2D绘图的基本步骤
  7. ImCash:币安下架BSV之辩:规则、中立与去中心化
  8. Java_Character类
  9. 实现我的第一个Java程序
  10. ACM山东工商 栈和队列算法练习
  11. React Native的学习资源网址
  12. NFV论文集(二)
  13. OpenCV 入门
  14. Django--数据库查询操作
  15. Go linux 实践4
  16. Vue.js组件遇到的那些坑
  17. 【WP8】线程安全的StorageHelper
  18. 如何构建日均千万PV Web站点 (三) Sharding
  19. php的精确计算
  20. CentOS LDAP安装配置

热门文章

  1. input标签中的accpet
  2. LeetCode 1062. Longest Repeating Substring
  3. cube.js 通过presto-gateway 进行连接
  4. mac 以多tab的方式打开
  5. ex1
  6. Shell字符串截取(非常详细)
  7. [Beta阶段]第三次Scrum Meeting
  8. java.lang.IllegalStateException: No instances www.xxxx.com available for localhost
  9. Meson version is 0.44.1 but project requires >=0.45.
  10. WireMock和Spring MVC模拟器