mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-12-25 09:06:34 +08:00
refactor: code optimization
This commit is contained in:
66
server/pkg/cache/redis.go
vendored
Normal file
66
server/pkg/cache/redis.go
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
package cache
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"mayfly-go/pkg/utils/anyx"
|
||||
"time"
|
||||
|
||||
"github.com/redis/go-redis/v9"
|
||||
)
|
||||
|
||||
type RedisCache struct {
|
||||
defaultCache
|
||||
|
||||
redisCli *redis.Client
|
||||
}
|
||||
|
||||
var _ (Cache) = (*RedisCache)(nil)
|
||||
|
||||
func NewRedisCache(rc *redis.Client) *RedisCache {
|
||||
rcache := &RedisCache{
|
||||
redisCli: rc,
|
||||
}
|
||||
rcache.c = rcache
|
||||
return rcache
|
||||
}
|
||||
|
||||
var _ (Cache) = (*RedisCache)(nil)
|
||||
|
||||
func (rc *RedisCache) Set(key string, value any, duration time.Duration) error {
|
||||
if _, ok := value.(string); !ok {
|
||||
return errors.New("redis cache set err -> value must be string")
|
||||
}
|
||||
return rc.redisCli.Set(context.Background(), key, anyx.ToString(value), duration).Err()
|
||||
}
|
||||
|
||||
func (rc *RedisCache) Get(k string) (any, bool) {
|
||||
if val, err := rc.redisCli.Get(context.Background(), k).Result(); err != nil {
|
||||
return "", false
|
||||
} else {
|
||||
return val, true
|
||||
}
|
||||
}
|
||||
|
||||
func (rc *RedisCache) Delete(k string) error {
|
||||
return rc.redisCli.Del(context.Background(), k).Err()
|
||||
}
|
||||
|
||||
func (rc *RedisCache) DeleteByKeyPrefix(keyPrefix string) error {
|
||||
res, err := rc.redisCli.Keys(context.TODO(), keyPrefix+"*").Result()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, key := range res {
|
||||
Del(key)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rc *RedisCache) Count() int {
|
||||
return int(rc.redisCli.DBSize(context.Background()).Val())
|
||||
}
|
||||
|
||||
func (rc *RedisCache) Clear() {
|
||||
rc.redisCli.FlushDB(context.Background())
|
||||
}
|
||||
Reference in New Issue
Block a user