Redis命令-Key

keys [pattern]

查找所有符合给定筛选项的key

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
127.0.0.1:6379> set test1 a
OK
127.0.0.1:6379> set test2 b
OK
127.0.0.1:6379> set test3 c
OK
127.0.0.1:6379> set test4 d
OK
127.0.0.1:6379> set prefix-test1 e
OK
127.0.0.1:6379> set prefix-test2 f
OK
127.0.0.1:6379> keys *
1) "prefix-test2"
2) "prefix-test1"
3) "test2"
4) "test3"
5) "test1"
6) "test4"
127.0.0.1:6379> keys test*
1) "test2"
2) "test3"
3) "test1"
4) "test4"
127.0.0.1:6379> keys prefix*
1) "prefix-test2"
2) "prefix-test1"
127.0.0.1:6379>

del [key]

删除已经存在的key,不存在的key会忽略,返回值是删除key的数量

1
2
3
4
5
6
7
8
127.0.0.1:6379> del test1
(integer) 1
127.0.0.1:6379> del no-exists-key
(integer) 0
127.0.0.1:6379> keys test*
1) "test2"
2) "test3"
3) "test4"

exists [key]

检查给定key是否存在,存在返回1,不存在返回0

1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> exists test1
(integer) 0
127.0.0.1:6379> exists test2
(integer) 1
127.0.0.1:6379> keys *
1) "prefix-test2"
2) "prefix-test1"
3) "test2"
4) "test3"
5) "test4"

dump [key]

序列化给定的key,key不存在返回nil,否则返回序列化之后的值

1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> dump test1
(nil)
127.0.0.1:6379> dump test2
"\x00\x01b\b\x00\xaf\tT.\x0f\xfa\x98\xbb"
127.0.0.1:6379> keys *
1) "prefix-test2"
2) "prefix-test1"
3) "test2"
4) "test3"
5) "test4"

expire [key]

为给定key设置过期时间(单位:秒),过期后将不再可用,设置成功时返回1,当key不存在或者低版本不能设置过期时间时返回0

1
2
3
4
5
6
7
8
127.0.0.1:6379> set expire-key 1
OK
127.0.0.1:6379> get expire-key
"1"
127.0.0.1:6379> expire expire-key 5
(integer) 1
127.0.0.1:6379> get expire-key
(nil)

expireat [key]

作用和expire类似,区别在于该命令是以unix时间戳格式设置过期时间

1
2
3
4
5
6
7
8
127.0.0.1:6379> set expireat-key 1
OK
127.0.0.1:6379> get expireat-key
"1"
127.0.0.1:6379> expireat expireat-key 1537302959
(integer) 1
127.0.0.1:6379> get expireat-key
(nil)

pexpire [key]

作用和expire类似,区别在于该命令是以毫秒为单位设置过期时间

1
2
3
4
5
6
7
8
127.0.0.1:6379> set pexpire-key 1
OK
127.0.0.1:6379> get pexpire-key
"1"
127.0.0.1:6379> pexpire pexpire-key 5000
(integer) 1
127.0.0.1:6379> get pexpire-key
(nil)

pexpireat [key]

作用和expireat类似,区别在于该命令的unix时间戳以毫秒计

1
2
3
4
5
6
7
8
127.0.0.1:6379> set pexpireat-key 1
OK
127.0.0.1:6379> get pexpireat-key
"1"
127.0.0.1:6379> pexpireat pexpireat-key 1537303302055
(integer) 1
127.0.0.1:6379> get pexpireat-key
(nil)

move [key] [dbid]

将给定的key移动到给定的数据库中,成功时返回1,失败时返回0,当目标数据库有相同的key时,返回0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 移动存在的key
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> set move-key 1
OK
127.0.0.1:6379> move move-key 1
(integer) 1
127.0.0.1:6379> exists move-key
(integer) 0
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> exists move-key
(integer) 1

# 移动不存在的key
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> exists move-key2
(integer) 0
127.0.0.1:6379> move move-key2 1
(integer) 0
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> exists move-key2
(integer) 0

# 当目标数据库有相同的key时,返回0
127.0.0.1:6379[1]> select 1
OK
127.0.0.1:6379[1]> set move-key3 1
OK
127.0.0.1:6379[1]> exists move-key3
(integer) 1
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> set move-key3 2
OK
127.0.0.1:6379> move move-key3 1
(integer) 0
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get move-key3
"1"

persist [key]

移除key的过期时间,成功返回1,失败返回0,当key不存在或者key没有设置过期时间时返回0

1
2
3
4
5
6
7
8
127.0.0.1:6379> set persist-key 1
OK
127.0.0.1:6379> expire persist-key 15
(integer) 1
127.0.0.1:6379> persist persist-key
(integer) 1
127.0.0.1:6379> get persist-key
"1"

ttl [key]

以秒为单位返回key的剩余过期时间,当key不存在时返回-2,当key存在但没有设置过期时间时返回-1

Redis 2.8 以前,当key不存在或者没有设置过期时间时都返回的是-1

1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> ttl ttl-key
(integer) -2
127.0.0.1:6379> set ttl-key 1
OK
127.0.0.1:6379> ttl ttl-key
(integer) -1
127.0.0.1:6379> expire ttl-key 10
(integer) 1
127.0.0.1:6379> ttl ttl-key
(integer) 9

pttl [key]

作用和ttl类似,区别在于返回的剩余过期时间单位是毫秒

1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> pttl pttl-key
(integer) -2
127.0.0.1:6379> set pttl-key 1
OK
127.0.0.1:6379> pttl pttl-key
(integer) -1
127.0.0.1:6379> pexpire pttl-key 9000
(integer) 1
127.0.0.1:6379> pttl pttl-key
(integer) 7471

randomkey

从当前数据库中随机返回一个key,当数据库不为空时返回一个key,当数据库为空时返回nil

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
127.0.0.1:6379> keys *
1) "move-key3"
2) "prefix-test2"
3) "persist-key"
4) "prefix-test1"
5) "test2"
6) "test3"
7) "test4"
127.0.0.1:6379> randomkey
"test4"
127.0.0.1:6379> randomkey
"test4"
127.0.0.1:6379> randomkey
"test2"
127.0.0.1:6379> randomkey
"persist-key"
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> randomkey
(nil)

rename [old-key] [new-key]

重命名key,成功时提示OK,失败时返回一个错误

  • 当旧Key和新Key相同时,返回OK
  • 当旧Key不存在时,返回一个错误
  • 当新Key已经存在时,会覆盖旧值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 正常情况
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set rename-key 1
OK
127.0.0.1:6379> keys *
1) "rename-key"
127.0.0.1:6379> rename rename-key rename-new-key
OK
127.0.0.1:6379> keys *
1) "rename-new-key"

# 旧Key和新Key相同
127.0.0.1:6379> set rename-key3 1
OK
127.0.0.1:6379> rename rename-key3 rename-key3
OK

# 旧key不存在
127.0.0.1:6379> exists rename-key2
(integer) 0
127.0.0.1:6379> rename rename-key2 rename-new-key2
(error) ERR no such key

# 新key已经存在
127.0.0.1:6379> set rename-key4 1
OK
127.0.0.1:6379> set rename-exists-key 2
OK
127.0.0.1:6379> get rename-exists-key
"2"
127.0.0.1:6379> rename rename-key4 rename-exists-key
OK
127.0.0.1:6379> get rename-exists-key
"1"

renamenx [old-key] [new-key]

仅当新Key不存在时返回1,新Key存在时返回0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 新key不存在
127.0.0.1:6379> set renamenx-key 1
OK
127.0.0.1:6379> exists renamenx-new-key
(integer) 0
127.0.0.1:6379> renamenx renamenx-key renamenx-new-key
(integer) 1
127.0.0.1:6379> get renamenx-new-key
"1"

# 新key存在时
127.0.0.1:6379> set renamenx-key2 1
OK
127.0.0.1:6379> set renamenx-new-key2 2
OK
127.0.0.1:6379> renamenx renamenx-key2 renamenx-new-key2
(integer) 0
127.0.0.1:6379> get renamenx-new-key2
"2"

type [key]

返回key的数据类型,数据类型有:

  • none(key不存在)
  • string(字符串)
  • list(列表)
  • set(集合)
  • zset(有序集合)
  • hash(哈希)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
127.0.0.1:6379> type none-exists-key
none
127.0.0.1:6379> set string-key 1
OK
127.0.0.1:6379> type string-key
string
127.0.0.1:6379> lpush list-key 1
(integer) 1
127.0.0.1:6379> type list-key
list
127.0.0.1:6379> sadd set-key 1
(integer) 1
127.0.0.1:6379> type set-key
set
127.0.0.1:6379> zadd zset-key 1 redis
(integer) 1
127.0.0.1:6379> type zset-key
zset
127.0.0.1:6379> hmset hash-key filed1 "hello" filed2 "redis"
OK
127.0.0.1:6379> type hash-key
hash

本文作者:Jormin
本文地址https://blog.lerzen.com/2018/01/16/redis命令-key/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!

----- 到这结束咯 感谢您的阅读 -----