Redis:set 、get、ttl、expire、persist 命令


#Redis


在 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"

( 本文完 )