【redis】模糊查询&删除操作

2019-10-16  本文已影响0人  warmsirius

前言

本文转载自博客园:

1. 预备知识:redis支持的3种模糊查询操作

元字符 说明
* 0个或多个匹配
? 1个匹配
[mnl] 匹配m,n,l其中之一

一、模糊搜索查询

redis 默认有16个DB ,分别是 0-15
redis-cli: 进入默认是第一个DB 0
select n: 切换 DB

1. *:0个或多个匹配

127.0.0.1:6379> select 9
OK
127.0.0.1:6379[9]> keys *
1) "age"
2) "name"
3) "k"
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

如:

redis-cli -n 2 keys "s*" | xargs redis-cli -n 2 del

redis-cli keys "*" | xargs redis-cli del 
/opt/redis/redis-cli keys "*" | xargs /opt/redis/redis-cli del
上一篇下一篇

猜你喜欢

热点阅读