前言
本文转载自博客园:
1. 预备知识:redis支持的3种模糊查询操作
元字符 | 说明 |
---|---|
* | 0个或多个匹配 |
? | 1个匹配 |
[mnl] | 匹配m,n,l其中之一 |
一、模糊搜索查询
redis
默认有16个DB ,分别是 0-15
redis-cli
: 进入默认是第一个DB 0
select n
: 切换 DB
1. *
:0个或多个匹配
- 例1:查找所有的key
127.0.0.1:6379> select 9
OK
127.0.0.1:6379[9]> keys *
1) "age"
2) "name"
3) "k"
- 例2:0个或多个匹配
keys h*llo # 匹配 hllo 和 heeello 等。
127.0.0.1:6379[9]> keys *ame
1) "ame"
2) "name"
2. ?
:1个匹配
- 例:
?
一个匹配
keys h?llo # 匹配 hello , hallo 和 hxllo 等,不能匹配hllo。
127.0.0.1:6379[9]> keys ?ame
1) "name"
127.0.0.1:6379[9]> keys n?me
1) "name"
3. [lmn]
: m,n,l其中之一
keys h[ae]llo # 匹配 hallo 和 hello ,但不匹配 hillo;特殊符号用 \ 隔开。
127.0.0.1:6379[9]> keys *ame
1) "ame"
2) "mame"
3) "lame"
4) "name"
127.0.0.1:6379[9]> keys [lmnk]ame
1) "mame"
2) "lame"
3) "name"
二、删除指定key
1. 删除模糊匹配出的key
redis-cli -n 数据库名(0-15) keys Pattern | xargs redis-cli -n 数据库名(0-15) del
192:~ yuanjun$ redis-cli -n 9 keys "*ame"
1) "ame"
2) "mame"
3) "lame"
4) "name"
192:~ yuanjun$ redis-cli -n 9 keys "*ame" | xargs redis-cli -n 9 del
(integer) 4
192:~ yuanjun$ redis-cli -n 9 keys "*ame"
(empty list or set)
2. flushdb
:删除当前数据库中的所有Key
flushdb
3. del key
: 删除单个 key
127.0.0.1:6379> set name 'alex'
OK
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)
4. exists
:判断是否存在某个key
在删除某个key之前可以先查询一下是否存在这个key
127.0.0.1:6379> exists name
(integer) 0
127.0.0.1:6379> set name ss
OK
127.0.0.1:6379> exists name
(integer) 1
5. del key1 key2
...: 同时删除多个key
127.0.0.1:6379> set name sss
OK
127.0.0.1:6379> set lame sss
OK
127.0.0.1:6379> set kame sss
OK
127.0.0.1:6379> keys *
1) "kame"
2) "lame"
3) "name"
127.0.0.1:6379> del kame lame name
(integer) 3
三、批量删除匹配通配符的key
需要使用Linux中的管道和xargs参数:
redis-cli -n 数据库名(0-15) keys Pattern | xargs redis-cli -n 数据库名(0-15) del
- 如果需要指定数据库,需要用到
-n
数据库编号 参数,下面是删除 2数据库中 s开头的键:
如:
redis-cli -n 2 keys "s*" | xargs redis-cli -n 2 del
redis-cli keys "*" | xargs redis-cli del
- 如果
redis-cli
没有设置成系统变量,需要指定redis-cli
的完整路径
如:
/opt/redis/redis-cli keys "*" | xargs /opt/redis/redis-cli del
网友评论