对于redis的批量删除指定key,有没有好的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于redis的批量删除指定key,有没有好的方法相关的知识,希望对你有一定的参考价值。

redis可以用flushdb/flushall删除所有的key。用del只能根据key去删除。另外一种方式,你可以通过设置过期时间让key到期自动删除。 参考技术A 1. 终端
获取所有Key命令:redis-cli keys ‘*’ ;
获取指定前缀的key:redis-cli KEYS “edu:*”
如果需要导出,可以redis-cli keys ‘*’ > /data/redis_key.txt
删除指定前缀的Key redis-cli KEYS “edu:*” | xargs redis-cli DEL

批量删除redis数据库中的key

在redis数据库中,如果大量以某些字段开头或结尾的key,一般都会用到命令keys进行模糊匹配。但是当我们想删除批量指定的keys,却犯愁了,因为redis没有提供相关的命令。那我们怎么操作能实现预期的效果呢?

(1) 删除单个key

127.0.0.1:6379> del key

如果知道有限多个key的名字,以下操作也可以实现批量操作

127.0.0.1:6379> del key1 key2 key3 ....

当key的数量达到一定数量时,这个方法明显时不现实的。

注意:redis命令行默认使用空格来分割key值,如果刚好某个key的明早带有空格,则对于有空格的key需要用引号包含起来:

127.0.0.1:6379>del ”first key" "second key"

(2) 批量删除key

批量删除key,我们可以借助Linux 的 xargs 指令来完成这个动作

127.0.0.1:6379>redis-cli keys "a*" | xargs redis-cli del
说明:如果redis-cli没有设置成系统变量,需要指定redis-cli的完整路径  
比如:/usr/local/redis/redis-cli keys "a*" | xargs /usr/local/redis/redis-cli del  

如果要指定 Redis 数据库访问密码,使用下面的命令

127.0.0.1:6379>redis-cli -a password keys "a*" | xargs redis-cli -a password del 

如果要访问 Redis 中特定的数据库,使用下面的命令

//下面的命令指定数据序号为0,即默认数据库  
127.0.0.1:6379>redis-cli -n 0 keys "a*" | xargs redis-cli -n 0 del

(3) 删除所有Key
删除所有Key,可以使用Redis的flushdb和flushall命令

//删除当前数据库中的所有Key  
flushdb  
//删除所有数据库中的key  
flushall 

 

以上是关于对于redis的批量删除指定key,有没有好的方法的主要内容,如果未能解决你的问题,请参考以下文章

Redis批量删除keys

【redis】redis批量删除以指定内容开头的key

redis 删除指定前缀的key

批量删除Redis数据库中的Key

如何批量删除Redis数据库中的Key

redis集群批量删除指定的key