47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package data
|
||
|
||
import (
|
||
"context"
|
||
"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
|
||
}
|
||
|
||
// 设置某个地方的天气情况,默认保留1小时数据
|
||
func SetWeatherCondition(ctx context.Context, key, condition string) error {
|
||
_, err := _redis.SetNX(ctx, key, condition, _expire*time.Second).Result()
|
||
return err
|
||
}
|
||
|
||
// 查找某个地方的天气情况
|
||
func GetWeatherCondition(ctx context.Context, key string) (string, error) {
|
||
value, err := _redis.Get(ctx, key).Result()
|
||
if err == nil {
|
||
return value, nil
|
||
} else if err == redis.Nil {
|
||
return "", nil
|
||
} else {
|
||
return "", err
|
||
}
|
||
}
|