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

批量删除指定前缀的Key有两中方法,一种是借助 redis-cli,另一种是通过 SCAN 命令来遍历所有匹配前缀的 key,并使用 DEL 命令逐个删除它们。

redis-cli

使用 Redis 自带的 redis-cli 命令行工具,你可以通过以下方式批量删除指定前缀的 key:

sql 复制代码
redis-cli KEYS "your_prefix*" | xargs redis-cli DEL

其中,your_prefix 是你要删除的 key 的前缀。

这个命令的作用是:

  1. 使用 KEYS 命令获取所有匹配前缀的 key 列表。
  2. 使用 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 包:

Go 复制代码
package main
 
import (
    "context"
	"fmt"
	"log"
	"strings"
 
	"github.com/go-redis/redis/v8"
)
 
func main() {
	ctx := context.Background()
 
	// 创建 Redis 客户端
	client := redis.NewClient(&redis.Options{
		Addr: "localhost:6379", // 你的 Redis 地址
		DB:   0,               // 使用的数据库编号
	})
 
	// 指定要删除的 key 的前缀
	prefix := "your_prefix"
 
	// 使用 SCAN 命令遍历匹配前缀的 key
	iter := client.Scan(ctx, 0, prefix+"*", 0).Iterator()
	for iter.Next(ctx) {
		key := iter.Val()
 
		// 使用 DEL 命令删除 key
		if err := client.Del(ctx, key).Err(); err != nil {
			log.Printf("Failed to delete key %s: %v", key, err)
		} else {
			fmt.Printf("Deleted key: %s\n", key)
		}
	}
	if err := iter.Err(); err != nil {
		log.Fatal(err)
	}
}

在上述代码中,就是先使用 SCAN 命令遍历所有匹配前缀的 key,然后逐个使用 DEL 命令删除它们。

相关推荐
HoHeHa1 分钟前
IDEA 手动下载安装数据库驱动,IDEA无法下载数据库驱动问题解决方案,IDEA无法连接数据库解决方案(通用,Oracle为例)
java·数据库·intellij-idea
22:30Plane-Moon5 分钟前
SQL 查询语法笔记
数据库·笔记·sql
望获linux1 小时前
【Linux基础知识系列】第六十四篇 - 了解Linux的硬件架构
linux·运维·服务器·开发语言·数据库·操作系统·嵌入式软件
全栈小51 小时前
【数据库】使用Sql Server将分组后指定字段的行数据转为一个字段显示,并且以逗号隔开每个值,收藏不迷路
数据库·sql server
JohnYan1 小时前
工作笔记 - 一种业务信息汇报机制的设计和实现
数据库·后端·postgresql
sq8002 小时前
EFCore ORM 数据库数据表迁移
数据库·后端·orm
小徐不徐说2 小时前
深入理解 Qt 信号与槽机制的底层逻辑
数据库·c++·qt·面试
一只小小汤圆2 小时前
qt 心跳包
服务器·数据库·qt
巴里巴气3 小时前
MongoDB事务和隔离级别的原理
数据库·mongodb
什么半岛铁盒3 小时前
MySQL的常用数据类型详解
linux·数据库·mysql·adb