redis批量删除指定前缀key四种方法(收藏)

打印 上一主题 下一主题

主题 1699|帖子 1699|积分 5097

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这篇文章主要先容了redis批量删除指定前缀key四种方法。
目次



  • redis批量删除指定前缀key四种方法

    • 第一种:
    • 第二种:
    • 第三种:
    • 第四种:

  • Redis 如何批量删除指定前缀的Key

    • 编码方式

redis批量删除指定前缀key四种方法

第一种:

Linux服务器上安装redis,然后进入到bin目次,执行如下下令
  1. ./redis-cli -h IP -p PORT -a PASSWORD keys 'key*' | xargs  ./redis-cli -h IP  -p PORT -a PASSWORD del
  2. IP:redis服务器的IP地址
  3. PORT:redis服务的端口
  4. PASSWORD :redis服务的密码
  5. xargs:将所有数据变为单行
  6. | :管道符,将上一次查询的结果作为下一次的参数
复制代码
如下演示:密码没有就不填写

第二种:

用正则匹配出全部想要删除的key,然后转换为单行,然后复制到 del 下令后面
用到SublimeText3软件
个人感觉不好用
第三种:

利用毗连工具进行分组
新版本的RedisDesktopManager目前支持通太过组批量删除key
然后 delete namespace
第四种:

利用jedis批量删除keys
方法将需要删除的key转换成数组传入jedis.del(keys)批量删除key

补充:
Redis 如何批量删除指定前缀的Key

批量删除指定前缀的Key有两中方法,一种是借助 redis-cli,另一种是通过 SCAN 下令来遍历全部匹配前缀的 key,并利用 DEL 下令逐个删除它们。
redis-cli
利用 Redis 自带的 redis-cli 下令行工具,你可以通过以下方式批量删除指定前缀的 key:
  1. redis-cli KEYS "your_prefix*" | xargs redis-cli DEL
复制代码
此中,your_prefix 是你要删除的 key 的前缀。
这个下令的作用是:


  • 利用 KEYS 下令获取全部匹配前缀的 key 列表。
  • 利用 xargs 下令将获取的 key 列表作为参数传递给后面的 DEL 下令,从而逐个删除这些 key。
需要留意的是,利用 KEYS 下令获取全部匹配前缀的 key 列表可能会在有大量 key 的情况下影响性能,由于它会壅闭 Redis 服务器的其他操作。在生产情况中,如果可能的话,最好利用迭代方式删除 key,例如利用 Lua 脚本大概编写程序来执行删除操作,以制止性能问题。
编码方式

在 Redis 中,除了上面的方法,要批量删除指定前缀的 key,你还可以利用 SCAN 下令来遍历全部匹配前缀的 key,并利用 DEL 下令逐个删除它们。但是,需要留意的是,SCAN 下令是一个游标迭代下令,它可以帮助你逐步遍历大量的 key,从而制止一次性获取全部 key 导致的性能问题。
以下是在 Redis 中批量删除指定前缀的 key 的示例代码,利用了 Go 的 github.com/go-redis/redis 包:
  1. package main
  2. import (
  3.     "context"
  4.         "fmt"
  5.         "log"
  6.         "strings"
  7.         "github.com/go-redis/redis/v8"
  8. )
  9. func main() {
  10.         ctx := context.Background()
  11.         // 创建 Redis 客户端
  12.         client := redis.NewClient(&redis.Options{
  13.                 Addr: "localhost:6379", // 你的 Redis 地址
  14.                 DB:   0,               // 使用的数据库编号
  15.         })
  16.         // 指定要删除的 key 的前缀
  17.         prefix := "your_prefix"
  18.         // 使用 SCAN 命令遍历匹配前缀的 key
  19.         iter := client.Scan(ctx, 0, prefix+"*", 0).Iterator()
  20.         for iter.Next(ctx) {
  21.                 key := iter.Val()
  22.                 // 使用 DEL 命令删除 key
  23.                 if err := client.Del(ctx, key).Err(); err != nil {
  24.                         log.Printf("Failed to delete key %s: %v", key, err)
  25.                 } else {
  26.                         fmt.Printf("Deleted key: %s\n", key)
  27.                 }
  28.         }
  29.         if err := iter.Err(); err != nil {
  30.                 log.Fatal(err)
  31.         }
  32. }
复制代码
在上述代码中,就是先利用 SCAN 下令遍历全部匹配前缀的 key,然后逐个利用 DEL 下令删除它们。
   粉丝福利, 免费领取C/C++ 开辟学习资料包、技能视频/项目代码,1000道大厂口试题,内容包罗(C++底子,网络编程,数据库,中心件,后端开辟/音视频开辟/Qt开辟/游戏开辟/Linuxn内核等进阶学习资料和最佳学习门路)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表