抱歉,我之前给出的示例代码中可能存在错误。正确的 Redis DEL 命令使用方式是将键作为参数传递给 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 keysDeleted int64 = 0
for {
var keys []string
var err error
keys, cursor, err = client.Scan(cursor, prefix+"*", 100).Result()
if err != nil {
log.Fatalf("Error scanning keys: %s", err)
return
}
for _, key := range keys {
delResult := client.Del(key)
if delResult.Err() != nil {
log.Printf("Error deleting key %s: %s", key, delResult.Err())
} else {
keysDeleted += delResult.Val()
}
}
if cursor == 0 {
break
}
}
fmt.Printf("%d keys deleted\n", keysDeleted)
fmt.Println("All matching keys have been deleted.")
}
再次抱歉给你带来的困惑,这个修正后的代码应该可以正确执行 Redis 的 DEL 命令来删除匹配键。请根据实际情况修改 Redis 的地址、端口、密码和数据库编号,并将 “your_prefix” 修改为你想要删除的键的前缀。
谢谢指出错误,并感谢你的理解和耐心!
内容由零声教学AI助手提供,问题来源于学员提问