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 ") 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("未发现任何绑定锁") } } }