package data import ( "context" "fmt" "github.com/go-redis/redis/v8" "time" "weather_and_earthquake/internal/config" ) var _redis *redis.Client var _expire time.Duration // 初始化 redis 连接 func InitWeatherCache(ctx context.Context, data *config.Redis) error { _redis = redis.NewClient(&redis.Options{ Addr: data.Addr, Password: data.Password, DB: data.DB, ReadTimeout: data.ReadTimeout * time.Second, WriteTimeout: data.WriteTimeout * time.Second, PoolSize: data.PoolSize, MinIdleConns: data.MinIdleConns, }) _expire = data.Expire _, err := _redis.Ping(ctx).Result() return err } // 设置某个地方的天气情况 func SetWeatherCondition(ctx context.Context, key, condition string) error { redis_key := fmt.Sprintf("%s-condition", key) _, err := _redis.SetNX(ctx, redis_key, condition, _expire).Result() return err } // 查找某个地方的天气情况 func GetWeatherCondition(ctx context.Context, key string) (string, error) { redis_key := fmt.Sprintf("%s-condition", key) value, err := _redis.Get(ctx, redis_key).Result() if err == nil { return value, nil } else if err == redis.Nil { return "", nil } else { return "", err } } // 设置某个地方的天气预报 func SetDailyForecasts(ctx context.Context, key, forecasts string) error { redis_key := fmt.Sprintf("%s-forecasts", key) _, err := _redis.SetNX(ctx, redis_key, forecasts, _expire).Result() return err } // 查找某个地方的天气预报 func GetDailyForecasts(ctx context.Context, key string) (string, error) { redis_key := fmt.Sprintf("%s-forecasts", key) value, err := _redis.Get(ctx, redis_key).Result() if err == nil { return value, nil } else if err == redis.Nil { return "", nil } else { return "", err } }