全局命令
Redis有5种数据结构, 它们是键值对中的值, 对于键来说有一些通用的命令。
1.查看所有键
keys *
下面插入了3对字符串类型的键值对:
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> set java jedis
OK
127.0.0.1:6379> set python redis-py
OK
keys*命令会将所有的键输出:
127.0.0.1:6379> keys *
1) "python"
2) "java"
3) "hello"
下面插入一个列表类型的键值对( 值是多个元素组成) :
127.0.0.1:6379> rpush mylist a b c d e f g
(integer) 7
62
dbsize命令会返回当前数据库中键的总数。 例如当前数据库有4个键,分别是hello、 java、 python、 mylist, 所以dbsize的结果是4:
127.0.0.1:6379> dbsize
(integer) 4
exists key
如果键存在则返回1, 不存在则返回0:
127.0.0.1:6379> exists java
(integer) 1
127.0.0.1:6379> exists not_exist_key
del key [key ...]
del是一个通用命令, 无论值是什么数据结构类型, del命令都可以将其删除, 例如下面将字符串类型的键java和列表类型的键mylist分别删除:
127.0.0.1:6379> del java
(integer) 1
127.0.0.1:6379> exists java
(integer) 0
127.0.0.1:6379> del mylist
63
(integer) 1
127.0.0.1:6379> exists mylist
(integer) 0
返回结果为成功删除键的个数, 假设删除一个不存在的键, 就会返回
0:
127.0.0.1:6379> del not_exist_key
(integer) 0
同时del命令可以支持删除多个键:
127.0.0.1:6379> set a 1
OK
127.0.0.1:6379> set b 2
OK
127.0.0.1:6379> set c 3
OK
127.0.0.1:6379> del a b c
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的整数: 键剩余的过期时间。
64
·-1: 键没设置过期时间。
·-2: 键不存在
可以通过ttl命令观察键hello的剩余过期时间:
#还剩7秒
127.0.0.1:6379> ttl hello
(integer) 7
...
#还剩1秒
127.0.0.1:6379> ttl hello
(integer) 1
#返回结果为-2, 说明键hello已经被删除
127.0.0.1:6379> ttl hello
(integer) -2
127.0.0.1:6379> get hello
(nil)
例如键hello是字符串类型, 返回结果为string。 键mylist是列表类型, 返回结果为list:
127.0.0.1:6379> set a b
OK
127.0.0.1:6379> type a
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 not_exsit_key
none
65
本小节只是抛砖引玉, 给出几个通用的命令, 为5种数据结构的使用做一个热身, 2.7节将对键管理做一个更为详细的介绍。
Redis有5种数据结构, 它们是键值对中的值, 对于键来说有一些通用的命令。
1.查看所有键
keys *
下面插入了3对字符串类型的键值对:
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> set java jedis
OK
127.0.0.1:6379> set python redis-py
OK
keys*命令会将所有的键输出:
127.0.0.1:6379> keys *
1) "python"
2) "java"
3) "hello"
2.键总数
dbsize下面插入一个列表类型的键值对( 值是多个元素组成) :
127.0.0.1:6379> rpush mylist a b c d e f g
(integer) 7
62
dbsize命令会返回当前数据库中键的总数。 例如当前数据库有4个键,分别是hello、 java、 python、 mylist, 所以dbsize的结果是4:
127.0.0.1:6379> dbsize
(integer) 4
dbsize命令在计算键总数时不会遍历所有键, 而是直接获取Redis内置的键总数变量, 所以dbsize命令的时间复杂度是O( 1) 。 而keys命令会遍历所有键, 所以它的时间复杂度是O( n) , 当Redis保存了大量键时, 线上环境禁止使用。
3.检查键是否存在exists key
如果键存在则返回1, 不存在则返回0:
127.0.0.1:6379> exists java
(integer) 1
127.0.0.1:6379> exists not_exist_key
(integer) 0
4.删除键del key [key ...]
del是一个通用命令, 无论值是什么数据结构类型, del命令都可以将其删除, 例如下面将字符串类型的键java和列表类型的键mylist分别删除:
127.0.0.1:6379> del java
(integer) 1
127.0.0.1:6379> exists java
(integer) 0
127.0.0.1:6379> del mylist
63
(integer) 1
127.0.0.1:6379> exists mylist
(integer) 0
返回结果为成功删除键的个数, 假设删除一个不存在的键, 就会返回
0:
127.0.0.1:6379> del not_exist_key
(integer) 0
同时del命令可以支持删除多个键:
127.0.0.1:6379> set a 1
OK
127.0.0.1:6379> set b 2
OK
127.0.0.1:6379> set c 3
OK
127.0.0.1:6379> del a b c
(integer) 3
5.键过期
expire key secondsRedis支持对键添加过期时间, 当超过过期时间后, 会自动删除键, 例如为键hello设置了10秒过期时间:
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> expire hello 10
(integer) 1
ttl命令会返回键的剩余过期时间, 它有3种返回值:
·大于等于0的整数: 键剩余的过期时间。
64
·-1: 键没设置过期时间。
·-2: 键不存在
可以通过ttl命令观察键hello的剩余过期时间:
#还剩7秒
127.0.0.1:6379> ttl hello
(integer) 7
...
#还剩1秒
127.0.0.1:6379> ttl hello
(integer) 1
#返回结果为-2, 说明键hello已经被删除
127.0.0.1:6379> ttl hello
(integer) -2
127.0.0.1:6379> get hello
(nil)
有关键过期更为详细的使用以及原理会在2.7节介绍。
6.键的数据结构类型
type key例如键hello是字符串类型, 返回结果为string。 键mylist是列表类型, 返回结果为list:
127.0.0.1:6379> set a b
OK
127.0.0.1:6379> type a
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 not_exsit_key
none
65
本小节只是抛砖引玉, 给出几个通用的命令, 为5种数据结构的使用做一个热身, 2.7节将对键管理做一个更为详细的介绍。