Linux上批量删除redis中指定前缀的key

在redis中有del方法,可以指定单个key,或者多个key。但是不能指定partten进行模糊匹配删除。

  1. 正好redis内置了lua解释器,那么我们通过一段lua脚本来批量删除指定前缀的key。

找到redis目录,进入src目录,使用./redis-cli登陆

a5f19202a3164b67dbd2a9044458d9eabc3.jpg

默认进入的是6379这个实例,我们是需要进入到7379这个实例,可以通过 -h host -p port来指定ip和端口

817996b997b96bc28f636b803cd11a391a6.jpg

通过如下lua脚本批量删除。

EVAL "local keys = redis.call('keys', ARGV[1]) for i=1,#keys,5000 do redis.call('del', unpack(keys, i, math.min(i+4999, #keys))) end return #keys" 0 'cloudwork_idx_*'

ccdb98791e00569ebedbf3fe6b0d5b876f6.jpg

注意:但是KEYS操作在线上是禁止使用的!

因为当数据量很大的时候keys命令会导致阻塞,所以请使用scan命令进行遍历。

Linux上批量删除redis中指定前缀的key_第1张图片

 

转载于:https://my.oschina.net/u/3863046/blog/1928541

你可能感兴趣的:(Linux上批量删除redis中指定前缀的key)