在 redis server 版本 4.0.9 中测试。
示例1
使用 set 设置 key:
127.0.0.1:6379> set "key-aaa" "value-bbb"
OK
使用 get 获取 key 的值:
127.0.0.1:6379> get "key-aaa"
"value-bbb"
127.0.0.1:6379> get key-aaa
"value-bbb"
若key不存在,会返回 nil:
127.0.0.1:6379> get "key-not-exists"
(nil)
使用 ttl 获取key的过期时间:
127.0.0.1:6379> ttl "key-aaa"
(integer) -1
127.0.0.1:6379> ttl "key-not-exists"
(integer) -2
ttl 会返回还有多长时间过期,单位秒。-1 表示未设置过期时间。-2 表示 key 不存在。
使用 expire 设置 key 的超时时间:
expire 指令可以设置 key 的超时时间,单位秒。即在多少秒后过期。 返回1代表设置成功;返回 0 代表设置不成功,此时是因为key不存在导致的。
127.0.0.1:6379> expire "key-aaa" 10
(integer) 1
127.0.0.1:6379> expire "key-not-exists" 10
(integer) 0
3 秒后使用 ttl 命令查询剩余的超时时间:
127.0.0.1:6379> ttl "key-aaa"
(integer) 7
使用 set 在设置key 的同时设置过期时间
127.0.0.1:6379> set "key-aaa" "value-bbb" EX 10
OK
127.0.0.1:6379> ttl "key-aaa"
(integer) 8
127.0.0.1:6379> set "key-aaa" "value-bbb" EX 10
OK
127.0.0.1:6379> ttl "key-aaa"
(integer) 9
127.0.0.1:6379> set "key-aaa" "value-bbb"
OK
127.0.0.1:6379> ttl "key-aaa"
(integer) -1
注意,set 操作会重置过期时间。EX 后面的数字代表过期时间,单位秒。若未指定过期时间,则永不过期。
也可以用 PX 指定毫秒级的过期时间:
127.0.0.1:6379> set "key-aaa" "value-bbb" PX 10000
OK
127.0.0.1:6379> ttl "key-aaa"
(integer) 8
127.0.0.1:6379> pttl "key-aaa"
(integer) 5535
pttl 命令用于查看还有多少毫秒过期。
EX 和 PX 不能一起用,会报语法错误:
127.0.0.1:6379> set "key-aaa" "value-bbb" EX 15 PX 10000
(error) ERR syntax error
使用 persist 清除过期时间
127.0.0.1:6379> set "key-aaa" "value-bbb" EX 15
OK
127.0.0.1:6379> ttl "key-aaa"
(integer) 11
127.0.0.1:6379> persist "key-aaa"
(integer) 1
127.0.0.1:6379> ttl "key-aaa"
(integer) -1
127.0.0.1:6379> get "key-aaa"
"value-bbb"
persist 返回值: 1:成功清理过期时间。 0:key 不存在,或者没有设置过期时间。
示例2
使用 set 在 key 不存在的时候设值,并同时设置超时时间
127.0.0.1:6379> set key-name key-value EX 120 NX
OK
127.0.0.1:6379> ttl key-name
(integer) 111
127.0.0.1:6379> ttl key-name
(integer) 110
127.0.0.1:6379> set key-name key-value2 Ex 120 NX
(nil)
127.0.0.1:6379> ttl key-name
(integer) 97
127.0.0.1:6379> ttl key-name
(integer) 96
127.0.0.1:6379> get key-name
"key-value"