站点图标 星露谷值班站长

Redis集群/单机 key无阻塞批量删除工具-Golang开发

当我们需要删除 redis 里面的 key 的时候,往往会使用 keys 命令匹配然后结合 xargs 命令去删除,这样做在 key 少的情况下是没有问题的。当我们的 key 超过几十万并且业务使用非常大的情况下就不能这样删除了。

keys 命令匹配会阻塞 redis 服务,造成业务中断。而 scan 命令可以很好的解决这个问题。网上大多数教程都是 keys 命令去删除,没有很好有效的能结合 redis 和集群版本的删除工具,于是就花时间写了一个 Redis 删除 key 的小工具。

此工具能很好的去删除 redis 集群中分散在不同实例上面的 key,通过 yml 文件作为配置文件,方便运维以及开发人员使用。

Redis key 匹配删除工具,支持 Redis 单机和 Redis 集群模糊匹配删除。
区别于使用 keys 命令匹配删除,工具使用 redis scan 进行匹配删除,这样删除不会对 redis 服务造成阻塞影响。
Redis Cluster 集群匹配删除会默认使用 Master 节点进行删除

github 工具下载

百度云盘链接:https://pan.baidu.com/s/1YbUrRer6CNiWTntWjnc0aQ
提取码:qxb0

配置文件示例

Redis: # redis 单机版配置
  Addr: "redis-db-beijing:6379"
  Password: ""
  DB: 2  # 数据库
  Match: # 要删除的匹配 key
    - "opstest:tmp*"
    - "tmp:*"
    - "ddn:userinfo:*"
Cluster: # redis 集群版配置
  Addrs: #redis 集群连接信息, 不区分 master slave 自动识别 master
    - "redis-db-beijing1:7000"
    - "redis-db-beijing1:7001"
    - "redis-db-beijing2:7002"
    - "redis-db-beijing2:7003"
    - "redis-db-beijing3:7004"
    - "redis-db-beijing3:7005"
  Username: ""Password:"xxxxxxx"
  Match: # 要删除的匹配 key
    - "opstest:tmp*"
    - "tmp:*"
    - "ddn:userinfo:*"

单机版配置

Redis: # redis 单机版配置
  Addr: "redis-db-beijing:6379"
  Password: ""
  DB: 2  # 数据库
  Match: # 要删除的匹配 key
    - "opstest:tmp*"
    - "tmp:*"
    - "ddn:userinfo:*"

集群版配置

Cluster: # redis 集群版配置
  Addrs: #redis 集群连接信息, 不区分 master slave 自动识别 master
    - "redis-db-beijing1:7000"
    - "redis-db-beijing1:7001"
    - "redis-db-beijing2:7002"
    - "redis-db-beijing2:7003"
    - "redis-db-beijing3:7004"
    - "redis-db-beijing3:7005"
  Username: ""Password:"xxxxxxx"
  Match: # 要删除的匹配 key
    - "opstest:tmp*"
    - "tmp:*"
    - "ddn:userinfo:*"

单机版删除效果

集群版删除效果

退出移动版