keys [pattern]
遍历所有key
演示:
127.0.0.1:6379> mset hello world here hey php good physic newton
OK
127.0.0.1:6379> keys he*
1) "hello"
2) "here"
127.0.0.1:6379> keys he[h-l]*
1) "hello"
127.0.0.1:6379> keys ph?
1) "php"
keys 命令一般不在生产环境使用
-
首先生产环境键值对比较多,keys命令是一个较重的命令,它是O(n)的命令。
-
而且redis是单线程的,如果你要拿出库里那么多key,会阻塞其他的命令。
如果你真有这样的需求,比如说把长期不用的key打印出来,来提高内存的使用率。可以使用 scan
命令,或者在只做备份不使用的热备从节点执行这些较重的命令。
dbsize
计算key的总数
演示:
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 k4 v4
OK
127.0.0.1:6379> dbsize
(integer) 4
127.0.0.1:6379> sadd myset a b c d e
(integer) 5
127.0.0.1:6379> dbsize
(integer) 5
dbsize
可以在线上使用的, redis 内置了key的计数器。它的时间复杂度是O(1)
exists
exists [key]
检查key 是否存在
演示:
127.0.0.1:6379> set name jinx
OK
127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> exists name
(integer) 0
exists
也是一个O(1)级别的命令
del
del key [key...]
删除一个或多个 key-value
演示:
127.0.0.1:6379> set name jinx
OK
127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> del name age
(integer) 2
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> get age
(nil)
127.0.0.1:6379> del no
(integer) 0
del
也是一个O(1)级别的命令
expire、ttl、persist
key 过期的三个命令
expire: expire key [seconds]
设置key在seconds秒后过期
ttl: ttl key
查看key剩余的过期时间
persist: persist key
去掉key的过期时间
演示:
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> expire hello 20
(integer) 1
127.0.0.1:6379> ttl hello
(integer) 13(还有13秒过期)
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> ttl hello
(integer) -2(-2代表key已经不存在了)
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> expire hello 20
(integer) 1
127.0.0.1:6379> ttl hello
(integer) 18(还有18秒过期)
127.0.0.1:6379> persist hello
(integer) 1
127.0.0.1:6379> ttl hello
(integer) -1(-1代表key存在,并且没有过期时间。)
expire
、ttl
、persist
的时间复杂度是O(1)
type
type key
返回key的类型
127.0.0.1:6379> set a b
OK
127.0.0.1:6379> type a
string
127.0.0.1:6379> sadd myset 1 2 3
(integer) 3
127.0.0.1:6379> type myset
set
127.0.0.1:6379> lpush mylist a b c
(integer) 3
127.0.0.1:6379> type mylist
list
127.0.0.1:6379> hset myhash k1 v1
(integer) 1
127.0.0.1:6379> type myhash
hash
127.0.0.1:6379> zadd myzset 89 english 92 yuwen
(integer) 2
127.0.0.1:6379> type myzset
zset
127.0.0.1:6379> type no-exists
none
type
的时间复杂度是O(1)