Files
ai_wht_wechat/go_backend/cmd/clear_bind_lock.go

84 lines
1.8 KiB
Go
Raw Permalink Normal View History

2026-01-06 19:36:42 +08:00
package main
import (
"ai_xhs/config"
"ai_xhs/database"
"context"
"fmt"
"log"
"os"
"strconv"
)
func main() {
// 加载配置
if err := config.LoadConfig("dev"); err != nil {
log.Fatalf("配置加载失败: %v", err)
}
// 连接Redis
if err := database.InitRedis(); err != nil {
log.Fatalf("Redis连接失败: %v", err)
}
ctx := context.Background()
// 获取命令行参数
if len(os.Args) < 2 {
fmt.Println("用法: go run cmd/clear_bind_lock.go <employee_id>")
fmt.Println("示例: go run cmd/clear_bind_lock.go 1")
os.Exit(1)
}
employeeID, err := strconv.Atoi(os.Args[1])
if err != nil {
log.Fatalf("无效的员工ID: %v", err)
}
// 构造锁的key
lockKey := fmt.Sprintf("lock:bind_xhs:%d", employeeID)
// 检查锁是否存在
exists, err := database.RDB.Exists(ctx, lockKey).Result()
if err != nil {
log.Fatalf("检查锁失败: %v", err)
}
if exists > 0 {
// 获取锁的TTL
ttl, err := database.RDB.TTL(ctx, lockKey).Result()
if err != nil {
log.Printf("获取锁TTL失败: %v", err)
} else {
log.Printf("发现锁: %s, 剩余时间: %v", lockKey, ttl)
}
// 删除锁
err = database.RDB.Del(ctx, lockKey).Err()
if err != nil {
log.Fatalf("删除锁失败: %v", err)
}
log.Printf("✓ 成功删除锁: %s", lockKey)
} else {
log.Printf("未发现锁: %s", lockKey)
}
// 列出所有相关的锁
fmt.Println("\n=== 检查所有绑定相关的锁 ===")
keys, err := database.RDB.Keys(ctx, "lock:bind_xhs:*").Result()
if err != nil {
log.Printf("查询锁失败: %v", err)
} else {
if len(keys) > 0 {
fmt.Printf("发现 %d 个绑定锁:\n", len(keys))
for _, key := range keys {
ttl, _ := database.RDB.TTL(ctx, key).Result()
fmt.Printf(" - %s (TTL: %v)\n", key, ttl)
}
} else {
fmt.Println("未发现任何绑定锁")
}
}
}