redis有5种数据结构,他们是键值对中的值,对于键来说有一些通用的命令。
语法:keys *
[root@vultr ~]# redis-cli
127.0.0.1:6379> keys *
1) "d"
2) "nihao"
3) "c"
4) "hello"
5) "redis"
6) "lianst"
7) "mylist"
8) "b"
9) "a"
10) "lian"
语法:dbsize
[root@vultr ~]# redis-cli
127.0.0.1:6379> keys *
1) "d"
2) "nihao"
3) "c"
4) "hello"
5) "redis"
6) "lianst"
7) "mylist"
8) "b"
9) "a"
10) "lian"
127.0.0.1:6379> dbsize
(integer) 10
dbsize命令在计算键总数的时候不会遍历所有键,而是直接获取redis内置的键总数变量,所以dbsize命令的时间复杂度是0(1)(时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数)。而keys命令会遍历所有键,所以他的时间复杂度是O(n),当redis保存大量键时,线上环境禁止使用。
检查键是否存在使用exists key查看,如果键存在则返回1,不存在就返回0。
语法:exists key
127.0.0.1:6379> keys *
1) "d"
2) "nihao"
3) "c"
4) "hello"
5) "redis"
6) "lianst"
7) "mylist"
8) "b"
9) "a"
10) "lian"
127.0.0.1:6379> exists hello
(integer) 1
127.0.0.1:6379> exists linux
(integer) 0
del是一个通用命令,无论值是什么数据结构类型,del命令都可以将其删除,如下所示:
语法:del key | del key1 key2 key3 ...
127.0.0.1:6379> keys *
1) "nihao"
2) "c"
3) "hello"
4) "redis"
5) "lianst"
6) "mylist"
7) "b"
8) "a"
9) "lian"
127.0.0.1:6379> del nihao
(integer) 1
127.0.0.1:6379> exists nihao
(integer) 0
127.0.0.1:6379> del mylist
(integer) 1
127.0.0.1:6379> exists mylist
(integer) 0
返回的结果是成功删除键的个数,架设删除一个不存在的键,就会返回0。
127.0.0.1:6379> del vultr
(integer) 0
同时,del命令可以支持删除多个键:
127.0.0.1:6379> keys *
1) "c"
2) "hello"
3) "redis"
4) "lianst"
5) "b"
6) "a"
7) "lian"
127.0.0.1:6379> del c hello a b
(integer) 4
127.0.0.1:6379> keys *
1) "redis"
2) "lianst"
3) "lian"
语法:expires key seconds
redis支持对键添加过期时间,当超过过期时间后,会自动删除键,例如为键hello设置10秒过期的时间:
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> expire hello 10
(integer) 1
ttl命令会返回键的剩余过期时间,他有3中返回值:
可以通过ttl命令来观察键hello的剩余过期时间:
127.0.0.1:6379> ttl hello
(integer) 4 # 还剩4秒
127.0.0.1:6379> ttl hello
(integer) 3 # 还剩3秒
127.0.0.1:6379> ttl hello
(integer) -2 # 返回结果为-2,说明键hello已经被删除了
语法:type key
例如键hello是字符串类型,返回结果为string。键mylist是列表类型,返回结果是list。
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> type hello
string
127.0.0.1:6379> rpush mylist a b c d e f g
(integer) 7
127.0.0.1:6379> type mylist
list
如果键不存在,则返回none。
127.0.0.1:6379> type lian
none