You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
2.1 KiB
112 lines
2.1 KiB
package redis
|
|
|
|
import (
|
|
"context"
|
|
"matchmaking-system/internal/conf"
|
|
"matchmaking-system/internal/pkg/flags"
|
|
"time"
|
|
|
|
red "github.com/redis/go-redis/v9"
|
|
)
|
|
|
|
// NewRedis
|
|
//
|
|
// @Description:
|
|
// @param c
|
|
// @return *red.Client
|
|
func NewRedis(c *conf.Data) *red.Client {
|
|
client := red.NewClient(&red.Options{
|
|
Addr: c.Redis.Addr,
|
|
DB: int(c.Redis.Db),
|
|
Password: c.Redis.Password, // no password set
|
|
})
|
|
_, err := client.Ping(context.Background()).Result()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return client
|
|
}
|
|
|
|
// GetCacheData
|
|
//
|
|
// @Description: Query data through key
|
|
// @param ctx
|
|
// @param redisDB
|
|
// @param key
|
|
// @return string
|
|
// @return error
|
|
func GetCacheData(ctx context.Context, redisDB *red.Client, key string) (string, error) {
|
|
rge, err := redisDB.Get(ctx, key).Result()
|
|
if err != nil {
|
|
return flags.SetNull, err
|
|
}
|
|
|
|
return rge, nil
|
|
}
|
|
|
|
// SetCacheData
|
|
//
|
|
// @Description:
|
|
// @param ctx
|
|
// @param redisDB
|
|
// @param key
|
|
// @param value
|
|
// @param td
|
|
// @return error
|
|
func SetCacheData(ctx context.Context, redisDB *red.Client, key string, value interface{}, td int) error {
|
|
if err := redisDB.Set(ctx, key, value, time.Duration(td)*time.Minute).Err(); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// GetCacheKeys
|
|
//
|
|
// @Description: Query all keys
|
|
// @param ctx
|
|
// @param redisDB
|
|
// @return []string
|
|
// @return error
|
|
func GetCacheKeys(ctx context.Context, redisDB *red.Client) ([]string, error) {
|
|
rge, err := redisDB.Keys(ctx, "*").Result()
|
|
if err != nil {
|
|
return []string{}, err
|
|
}
|
|
|
|
return rge, nil
|
|
}
|
|
|
|
// GetCacheCount
|
|
//
|
|
// @Description: Query the total number of Redis
|
|
// @param ctx
|
|
// @param redisDB
|
|
// @param key
|
|
// @return int64
|
|
// @return error
|
|
func GetCacheCount(ctx context.Context, redisDB *red.Client, key string) (int64, error) {
|
|
rge, err := redisDB.DBSize(ctx).Result()
|
|
if err != nil {
|
|
return rge, err
|
|
}
|
|
|
|
return rge, nil
|
|
}
|
|
|
|
// SetCacheValue
|
|
//
|
|
// @Description: persistent data
|
|
// @param ctx
|
|
// @param redisDB
|
|
// @param key
|
|
// @param value
|
|
// @return error
|
|
func SetCacheValue(ctx context.Context, redisDB *red.Client, key, value string) error {
|
|
if err := redisDB.Set(ctx, key, value, 0).Err(); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|