ZBLOG

golang 操作 redis 删除某个前缀的所有 key,可能有上万条

在 Golang 中,你可以使用 Redis 的 SCAN 命令和 DEL 命令来删除某个前缀的所有键。以下是一个示例代码:

package main

import (
	"fmt"
	"log"

	"github.com/go-redis/redis/v8"
)

func main() {
	// 创建 Redis 客户端
	client := redis.NewClient(&redis.Options{
		Addr:     "localhost:6379", // 根据实际情况修改地址和端口
		Password: "",               // 如果设置了密码,请填写对应的密码
		DB:       0,                // 根据实际情况修改数据库编号
	})

	defer client.Close()

	prefix := "your_prefix:" // 修改为你想要删除的键的前缀

	var cursor uint64 = 0
	var keys []string

	for {
		var err error
		keys, cursor, err = client.Scan(cursor, prefix+"*", 100).Result()
		
    if err != nil {
			log.Fatalf("Error scanning keys: %s", err)
			return
		}

        if len(keys) == 0 { 
            break 
        }

        _, delErr := client.Del(keys...).Result()
        
        if delErr != nil {
            log.Fatalf("Error deleting keys: %s", delErr)
            return
        }
        
        fmt.Printf("%d keys deleted\n", len(keys))
    }

	fmt.Println("All matching keys have been deleted.")
}

以上代码中,我们使用 SCAN 命令扫描匹配给定前缀的键,并且每次最多返回100个键。然后,我们使用 DEL 命令一次性删除这些键。循环将继续进行,直到没有更多匹配的键为止。

请注意,你需要在代码中修改 Redis 的地址、端口、密码和数据库编号,并将 “your_prefix” 修改为你想要删除的键的前缀。确保导入了适当的 Redis 客户端库,例如 “github.com/go-redis/redis/v8”。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=13569

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?