package worker import ( "fmt" "log" "time" ) import ( "context" "encoding/json" "github.com/go-redis/redis/v8" ) var redisClient *redis.Client // Redis 客户端, 用于连接 Redis 服务器 func InitRedis() { ctx := context.Background() // 连接redis redisClient = redis.NewClient(&redis.Options{ Addr: "127.0.0.1:6379", // Redis 服务器地址 Password: "lj502138", // 如果 Redis 设置了密码 DB: 2, // 使用的数据库编号 }) // 验证 Redis 客户端是否可以正常工作 _, err := redisClient.Ping(ctx).Result() if err != nil { log.Fatalf("Error connecting to Redis: %v", err) } } func CloseRedis() { // 关闭 Redis 客户端 if err := redisClient.Close(); err != nil { log.Fatalf("Error closing Redis client: %v", err) } } func isContainKey(key string) bool { ctx := context.Background() val, err := redisClient.Exists(ctx, key).Result() // 检查键是否存在, 如果存在则返回 1, 否则返回 0 if err != nil { log.Fatalf("Error getting key: %v", err) } if val == 0 { return false } return true } // 设置redis func SetRedis(key string, value string) { ctx := context.Background() // 设置键值对, 0 表示不设置过期时间, 如果需要设置过期时间, 可以设置为 time.Second * 10 等 err := redisClient.Set(ctx, key, value, time.Second*100).Err() if err != nil { log.Fatalf("Error setting key: %v", err) } } // 设置redis func SetRedisWithExpire(key string, value string, expire time.Duration) { // 设置键值对, 0 表示不设置过期时间, 如果需要设置过期时间, 可以设置为 time.Second * 10 等 ctx := context.Background() // 设置键值对, 0 表示不设置过期时间, 如果需要设置过期时间, 可以设置为 time.Second * 10 等 err := redisClient.Set(ctx, key, value, expire).Err() if err != nil { log.Fatalf("Error setting key: %v", err) } } // 获取redis func GetRedis(key string) string { ctx := context.Background() val, err := redisClient.Get(ctx, key).Result() // 从 Redis 读取键值, 如果键不存在则返回空字符串, 如果出现错误则返回错误 if err != nil { fmt.Println("Error getting key: %v", err) } return val } // pop redis list from left func popRedisList(key string) string { ctx := context.Background() val, err := redisClient.LPop(ctx, key).Result() // 从 Redis 读取键值, 如果键不存在则返回空字符串, 如果出现错误则返回错误 if err != nil { log.Fatalf("Error reading from Redis: %v", err) } return val } // push redis list from right func pushRedisList(key string, value string) { ctx := context.Background() err := redisClient.RPush(ctx, key, value).Err() if err != nil { log.Fatalf("Error setting key: %v", err) } } // delete redis key func delRedis(key string) { ctx := context.Background() err := redisClient.Del(ctx, key).Err() if err != nil { log.Fatalf("Error setting key: %v", err) } } // User 用户,用于存入 Redis hash type RUser struct { ID int `json:"id"` Name string `json:"name"` Age int `json:"age"` Email string `json:"email"` } func (u *RUser) toJSONString() string { // 将User对象编码为JSON字符串 userJSON, err := json.Marshal(u) if err != nil { log.Fatalf("Failed to marshal user: %v", err) } return string(userJSON) } // put hash to redis func hSetRedis(key string, field string, value string) { ctx := context.Background() err := redisClient.HSet(ctx, key, field, value).Err() if err != nil { log.Fatalf("Error setting key: %v", err) } } // get hash from redis func hGetRedis(key string, field string) string { ctx := context.Background() val, err := redisClient.HGet(ctx, key, field).Result() if err != nil { log.Fatalf("Error getting key: %v", err) } return val }