Spaces:
Paused
Paused
| package config | |
| import ( | |
| "augment2api/pkg/logger" | |
| "context" | |
| "os" | |
| "time" | |
| "github.com/go-redis/redis/v8" | |
| ) | |
| var RDB redis.Cmdable | |
| // InitRedisClient This function is called after init() | |
| func InitRedisClient() (err error) { | |
| RedisConnString := AppConfig.RedisConnString | |
| if RedisConnString == "" { | |
| logger.Log.Debug("REDIS_CONN_STRING not set, Redis is not enabled") | |
| return nil | |
| } | |
| opt, err := redis.ParseURL(RedisConnString) | |
| if err != nil { | |
| logger.Log.Fatalln("failed to parse Redis connection string: " + err.Error()) | |
| } | |
| RDB = redis.NewClient(opt) | |
| ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) | |
| defer cancel() | |
| _, err = RDB.Ping(ctx).Result() | |
| if err != nil { | |
| logger.Log.Fatalln("Redis ping test failed: " + err.Error()) | |
| } | |
| return err | |
| } | |
| func ParseRedisOption() *redis.Options { | |
| opt, err := redis.ParseURL(os.Getenv("REDIS_CONN_STRING")) | |
| if err != nil { | |
| logger.Log.Fatalln("failed to parse Redis connection string: " + err.Error()) | |
| } | |
| return opt | |
| } | |
| func RedisSet(key string, value string, expiration time.Duration) error { | |
| ctx := context.Background() | |
| return RDB.Set(ctx, key, value, expiration).Err() | |
| } | |
| func RedisGet(key string) (string, error) { | |
| ctx := context.Background() | |
| return RDB.Get(ctx, key).Result() | |
| } | |
| func RedisDel(key string) error { | |
| ctx := context.Background() | |
| return RDB.Del(ctx, key).Err() | |
| } | |
| // RedisHSet 设置哈希表字段值 | |
| func RedisHSet(key, field, value string) error { | |
| ctx := context.Background() | |
| return RDB.HSet(ctx, key, field, value).Err() | |
| } | |
| // RedisHGet 获取哈希表字段值 | |
| func RedisHGet(key, field string) (string, error) { | |
| ctx := context.Background() | |
| return RDB.HGet(ctx, key, field).Result() | |
| } | |
| // RedisExpire 设置键的过期时间 | |
| func RedisExpire(key string, expiration time.Duration) error { | |
| ctx := context.Background() | |
| return RDB.Expire(ctx, key, expiration).Err() | |
| } | |
| // RedisKeys 获取匹配指定模式的所有键 | |
| func RedisKeys(pattern string) ([]string, error) { | |
| ctx := context.Background() | |
| return RDB.Keys(ctx, pattern).Result() | |
| } | |
| // RedisExists 检查键是否存在 | |
| func RedisExists(key string) (bool, error) { | |
| ctx := context.Background() | |
| result, err := RDB.Exists(ctx, key).Result() | |
| if err != nil { | |
| return false, err | |
| } | |
| return result > 0, nil | |
| } | |
| // RedisIncr 增加Redis中的计数器 | |
| func RedisIncr(key string) error { | |
| ctx := context.Background() | |
| _, err := RDB.Incr(ctx, key).Result() | |
| return err | |
| } | |
| // RedisHExists 检查哈希表字段是否存在 | |
| func RedisHExists(key, field string) (bool, error) { | |
| ctx := context.Background() | |
| return RDB.HExists(ctx, key, field).Result() | |
| } | |
| // RedisHGetAll 获取哈希表中的所有字段和值 | |
| func RedisHGetAll(key string) (map[string]string, error) { | |
| ctx := context.Background() | |
| return RDB.HGetAll(ctx, key).Result() | |
| } | |