命令 | 功能 |
set | 创建键值对 |
keys | 遍历查看所有键 |
exists | 判断一个键是否存在,1存在,0不存在 |
dbsize | 当前数据库中有多少个键 |
del | 删除一个或多个键 |
expire | 设置过期时间 |
ttl | 查看过期时间 |
type | 判断键的类型 |
Redis有5种数据结构,它们是键值对中的值,对于键来说有一些通用的命令。
1.查看所有键
命令:keys *
#keys *会将所有的键输出 127.0.0.1:6379> keys * 1) "hello" 2) "a" 3) "python" 4) "mylist" 5) "name" #添加一个键 127.0.0.1:6379> set World peace OK 127.0.0.1:6379> keys * 1) "hello" 2) "a" 3) "python" 4) "mylist" 5) "World" #已经添加 6) "name"
2.键总数
命令:dbsize
dbsize命令会返回当前数据库中键的总数。
127.0.0.1:6379> dbsize (integer) 6 #一共存在6个键 127.0.0.1:6379> keys * #查看所有 1) "hello" 2) "a" 3) "python" 4) "mylist" 5) "World" 6) "name"
dbsize命令在计算键总数时不会遍历所有键,而是直接获取Redis内置的键总数变量,所以dbsize命令的时间复杂度是O(1)。
而keys命令会遍历所有键,所以它的时间复杂度是O(n),当Redis保存了大量键时,线上环境禁止使用。
3检查键是否存在
命令:exists key
如果键存在则返回1,不存在则返回0。
127.0.0.1:6379> exists name (integer) 1 #存在 127.0.0.1:6379> exists huaxia (integer) 0 #不存在
4.删除键
命令:del key [key ...]
del是一个通用命令,无论值是什么数据结构类型,del命令都可以将其删除:
127.0.0.1:6379> del python (integer) 1 #删除成功 127.0.0.1:6379> exists python (integer) 0 #查询不存在 127.0.0.1:6379> del name (integer) 1 127.0.0.1:6379> exists name (integer) 0
返回结果为成功删除键的个数,假如删除一个不存在的键,就会返回0:
127.0.0.1:6379> del maoxian (integer) 0 #删除个数为0,证明不存在
同时del命令可以支持删除多个键:
127.0.0.1:6379> set Paul 3 OK 127.0.0.1:6379> set Harden 13 OK 127.0.0.1:6379> set Gordon 10 OK 127.0.0.1:6379> del Paul Harden Gordon (integer) 3
5.键过期
语法:expire key times
Redis支持对键添加过期时间,当超过过期时间后,会自动删除键。
127.0.0.1:6379> set manzi zero OK #添加一个键 127.0.0.1:6379> expire manzi 8 (integer) 1 #设置8秒的过期时间 127.0.0.1:6379> ttl manzi (integer) 3 #还剩3秒 127.0.0.1:6379> ttl manzi (integer) -2 #键已经被删除
ttl命令会返回键的剩余过期时间,它有3种返回值:
(1)大于等于0的整数:键剩余的过期时间。
(2)-1:键没设置过期时间
(3)-2:键不存在
127.0.0.1:6379> exists hello (integer) 1 #键存在 127.0.0.1:6379> ttl hello (integer) -1 #没有设置过期时间
6.键的数据结构类型
命令:type key
127.0.0.1:6379> set a b OK 127.0.0.1:6379> type a string #字符串 127.0.0.1:6379> rpush list_one a b c d e (integer) 5 127.0.0.1:6379> type list_one list #列表
键的数据类型指的是它的值代表的数据类型,单独讨论键没有意义。