当前位置:   article > 正文

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

redis删除前缀的key

这篇文章主要介绍了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:

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内核等进阶学习资料和最佳学习路线)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/503440
推荐阅读
相关标签
  

闽ICP备14008679号