Redis全局命令

@lianst  September 3, 2017

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中返回值:

  • 大于等于0的证书:键剩余的过期时间
  • -1:键没有设置过期的时间
  • -2:键不存在
  • 可以通过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
    

    添加新评论