Redis命令

这篇文章来了解下Redis的几个通用命令吧。

通用命令

1.keys

时间复杂度:O(n), n 为数据库中 key 的数量。
返回值:符合给定模式的 key 列表。
一般在生产环境中不建议使用(生产环境key数量比较多容易造成阻塞)

1
2
3
4
5
6
keys [pattern]   #查找所有符合给定模式 pattern 的 key 。
keys * #匹配数据库中所有 key 。
keys h?llo #匹配 hello , hallo 和 hxllo 等。
keys h*llo #匹配 hllo 和 heeeeello 等。
keys h[ae]llo #匹配 hello 和 hallo ,但不匹配 hillo 。
keys he[h-l]* #匹配h-l范围内的字母,如匹配hello,不匹配hero

2.dbsize

返回当前数据库的 key 的数量。
时间复杂度:O(1)
返回值:当前数据库的 key 的数量。
生产环境可使用

1
2
127.0.0.1:6379> dbsize
(integer) 6

3.exists

exists key 检查给定 key 是否存在。
时间复杂度:O(1)
返回值:若 key 存在,返回 1 ,否则返回 0 。

1
2
3
4
127.0.0.1:6379> exists hello
(integer) 0
127.0.0.1:6379> exists name
(integer) 1

4.del

del key [key …]
删除给定的一个或多个 key ,不存在的 key 会被忽略。
时间复杂度:O(n), n 为被删除的 key 的数量。
删除单个字符串类型的 key ,时间复杂度为O(1)。
删除单个列表、集合、有序集合或哈希表类型的 key ,时间复杂度为O(M), M 为以上数据结构内的元素数量。
返回值:被删除 key 的数量。

5.expire

expire key seconds
设置 key 在seconds秒后过期
时间复杂度:O(1)
返回值:设置成功返回 1 ,当 key 不存在或者不能为 key 设置生存时间时,返回 0 。

1
2
3
4
5
6
#设置 age 20秒后过期
127.0.0.1:6379> expire age 20
(integer) 1
#查看 age 剩余生存时间
127.0.0.1:6379> ttl age
(integer) 18

6.ttl

ttl key
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
时间复杂度:O(1)
返回值:
当 key 不存在时,返回 -2 。
当 key 存在但没有设置剩余生存时间时,返回 -1 。
否则,以秒为单位,返回 key 的剩余生存时间。
注意:在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。

7.persist

persist key
去除 key 的过期时间,使其变成一个不带生存时间、永不过期 key 。
时间复杂度:O(1)
返回值:
当生存时间移除成功时,返回 1 .
如果 key 不存在或 key 没有设置生存时间,返回 0

1
2
3
4
5
6
7
8
9
10
11
12
#设置 age 30秒后过期
127.0.0.1:6379> expire age 30
(integer) 1
#查看 age 生存时间(此显示还有28秒)
127.0.0.1:6379> ttl age
(integer) 28
#去除 age 生存时间,使其不过期
127.0.0.1:6379> persist age
(integer) 1
#再次查看 age ,此时为不过期
127.0.0.1:6379> ttl age
(integer) -1

8.type

type key
返回 key 所储存的值的类型。
时间复杂度:O(1)
返回值:
none (key不存在)
string (字符串)
list (列表)
set (集合)
zset (有序集)
hash (哈希表)

参考文献