redis有五种数据结构,他们是键值对中的值,对于键来说有一些常用的通用的命令
1 查看所有键
keys *
下面插入了3对字符串类型的键值对
127.0.0.1: 6379> set hello world
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 g
(integer) 7
dbsize命令会返回当前数据库中键的总数。例如当前数据库有4个键,分别是hjava、 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
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>seta1
127.0.0.1:6379>setb2
OK
127.0.0.1:6379>setc3
OK
127.0.0.1:6379> del a b c
OK
(integer)3
5.键过期
expire key seconds
Redis支持对键添加过期时间,当超过过期时间后,会自动删除键,例如为键 hello设置了10秒过期时间:
127.0.0.1: 6379> set hello world
127.0.0.1:6379> expire hello 10
(integer)1
tt1命令会返回键的剩余过期时间,它有3种返回值:
大于等于0的整数:键剩余的过期时间。
-1:键没设置过期时间。
-2:键不存在
可以通过tt1命令观察键helo的剩余过期时间:
#还剩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> get hello
(nil)
6 键的数据类型
127.0.0.1:6379> set a b
ok
127.0.0.1:6379> type a
string
127.0.0.1:6379> set mylist a b c d
(integer)4
127.0.0.1:6379> type mylist
list
如果不存在 则返回none
127.0.0.1:6379> type not_exsit_key
none
列出的只是简单常用的一些命令