Redis常用命令(键值相关)

前面几篇文章分别写了Redis不同数据类型使用的命令,这篇文章中的命令适用Redis的所有数据类型。

命令:keys patten,获取符合规则的键名列表。

patten指通配符格式,规则如下:

* 表示匹配任意字符,也就是说会查询出所有key。

127.0.0.1:6379> keys *
 1) "zset"
 2) "set1"
 3) "ceshi"
 4) "list1"
 5) "set2"
 6) "su"
 7) "AA"
 8) "c"
 9) "person"
10) "b"

?表示匹配一个字符,也就是说?替代一个字符

127.0.0.1:6379> keys ?
1) "c"
2) "b"
127.0.0.1:6379> keys set?
1) "set1"
2) "set2"
127.0.0.1:6379> keys se?
(empty list or set)
127.0.0.1:6379> keys ?u
1) "su"

[] 表示匹配括号内的任意一个字符,括号内字符可以使用-来表示范围

127.0.0.1:6379> keys [b]
1) "b"
127.0.0.1:6379> keys [s]
(empty list or set)
127.0.0.1:6379> keys [a-b]
1) "b"
127.0.0.1:6379> keys [a-m]
1) "c"
2) "b"
127.0.0.1:6379> keys list[1-3]
1) "list1"
127.0.0.1:6379> keys set[1-3]
1) "set1"
2) "set2"

\x 表示匹配字符x,用于转义

127.0.0.1:6379> keys \b
1) "b"
127.0.0.1:6379> keys \m
(empty list or set)
127.0.0.1:6379> keys set\1
1) "set1"

注意:keys命令不允许在正式环境使用!keys命令会遍历Redis中所有key,当Redis中key足够多的时候,性能会受到影响,甚至出现宕机等事故。

命令:exists key [key ...],查询key是否存在,返回存在key的个数

127.0.0.1:6379> exists a
(integer) 0
127.0.0.1:6379> exists b
(integer) 1
127.0.0.1:6379> exists a b c 
(integer) 2
127.0.0.1:6379> keys *
 1) "zset"
 2) "set1"
 3) "ceshi"
 4) "list1"
 5) "set2"
 6) "su"
 7) "AA"
 8) "c"
 9) "person"
10) "b"

命令:del key [key ...],删除key,返回删除key的个数

127.0.0.1:6379> del a
(integer) 0
127.0.0.1:6379> del b
(integer) 1
127.0.0.1:6379> del a b c
(integer) 1
127.0.0.1:6379> keys *
1) "zset"
2) "set1"
3) "ceshi"
4) "list1"
5) "set2"
6) "su"
7) "AA"
8) "person"

注意:del命令不支持通配符,但是结合linux管道和xargs命令可以批量删除符合某一规则的所有(或者一部分)key,linux管道符“|”的作用是管道符左边的输出会作为管道符右边的输入,xargs是给命令传输参数的过滤器,能够捕获一个命令的输出。

127.0.0.1:6379> exit
[root@localhost src]# ./redis-cli keys "set?" | xargs ./redis-cli del 
(integer) 2
[root@localhost src]# ./redis-cli
127.0.0.1:6379> keys *
1) "zset"
2) "ceshi"
3) "list1"
4) "su"
5) "AA"
6) "person"

不使用keys命令,但是却想批量删除key时,在redis 2.8之后的版本中可以使用scan命令替代,如下所示,-L 10表示命令行最多允许有 10个非空的输入行,这样就能有效避免查询所有key。

127.0.0.1:6379> set AB 123
OK
127.0.0.1:6379> keys *
1) "zset"
2) "ceshi"
3) "list1"
4) "su"
5) "AA"
6) "person"
7) "AB"
127.0.0.1:6379> exit
[root@localhost src]# ./redis-cli --scan --pattern "A?" | xargs -L 10 ./redis-cli del
(integer) 2
[root@localhost src]# ./redis-cli
127.0.0.1:6379> keys *
1) "zset"
2) "ceshi"
3) "list1"
4) "su"
5) "person"

命令:expire key seconds,设置一个key的生存时间,单位为秒;

命令:persist key,取消key生存时间的设置,即把key设置成永久存在的;

命令:ttl key,获取key剩余的生存时间,单位为秒。

27.0.0.1:6379> expire su 20
(integer) 1
127.0.0.1:6379> ttl su
(integer) 16
127.0.0.1:6379> ttl su
(integer) 12
127.0.0.1:6379> exists su
(integer) 0
127.0.0.1:6379> set su 111
OK
127.0.0.1:6379> exists su
(integer) 1
127.0.0.1:6379> expire su 30
(integer) 1
127.0.0.1:6379> ttl su
(integer) 24
127.0.0.1:6379> persist su
(integer) 1
127.0.0.1:6379> exists su
(integer) 1

命令:move key db,将当前数据库指定的key移动到参数(db)指定的数据库中,成功返回1,key在当前数据库不存在或者目标数据库已存在,则返回0。

命令:select index,切换数据库。

127.0.0.1:6379> move su 1
(integer) 1
127.0.0.1:6379> keys *
1) "zset"
2) "ceshi"
3) "list1"
4) "person"
127.0.0.1:6379> move su 1
(integer) 0
127.0.0.1:6379> set su 12
OK
127.0.0.1:6379> keys *
1) "zset"
2) "ceshi"
3) "list1"
4) "su"
5) "person"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "su"
127.0.0.1:6379[1]> 

命令:randomkey,从当前数据库中随机返回一个key当前数据库为空则返回nil。

127.0.0.1:6379> keys *
1) "zset"
2) "ceshi"
3) "list1"
4) "su"
5) "person"
127.0.0.1:6379> randomkey 
"list1"
127.0.0.1:6379> randomkey 
"zset"
127.0.0.1:6379> randomkey 
"ceshi"
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> keys *
(empty list or set)
127.0.0.1:6379[2]> randomkey
(nil)

命令:rename key newkey,将指定的key重命名

127.0.0.1:6379> rename su su1
OK
127.0.0.1:6379> keys *
1) "zset"
2) "ceshi"
3) "list1"
4) "su1"
5) "person"

命令:type key,获取key的类型,如:string,hash,list,set,zset。

127.0.0.1:6379> type su1
string
127.0.0.1:6379> type zset
zset
127.0.0.1:6379> type list1
list
127.0.0.1:6379> type person
hash

 

 

如果有写的不对的地方,请大家多多批评指正,非常感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值