2024-06-21 14:02:50 +08:00
|
|
|
// Package cache ...
|
|
|
|
//
|
|
|
|
// Description : cache ...
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 2024-06-21 14:18
|
|
|
|
package cache
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
cacheAbstract "git.zhangdeman.cn/zhangdeman/cache/abstract"
|
|
|
|
"git.zhangdeman.cn/zhangdeman/redis"
|
2024-10-09 18:30:12 +08:00
|
|
|
"git.zhangdeman.cn/zhangdeman/wrapper"
|
2024-06-21 14:02:50 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
RedisClient = &Redis{}
|
|
|
|
)
|
|
|
|
|
|
|
|
// Redis 基于redis缓存
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 14:19 2023/3/21
|
|
|
|
type Redis struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// Exist 缓存是否存在
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 14:02 2024/6/21
|
|
|
|
func (r *Redis) Exist(ctx context.Context, instanceFlag string, key string) (bool, error) {
|
|
|
|
if nil == ctx {
|
|
|
|
ctx = context.Background()
|
|
|
|
}
|
|
|
|
res := redis.Wrapper.Exist(ctx, instanceFlag, key)
|
|
|
|
return res.Result == "1", res.Err
|
|
|
|
}
|
|
|
|
|
2024-10-09 18:30:12 +08:00
|
|
|
// TTL 获取key的剩余有效期
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 18:11 2024/10/9
|
|
|
|
func (r *Redis) TTL(ctx context.Context, instanceFlag string, key string) (int64, error) {
|
|
|
|
if nil == ctx {
|
|
|
|
ctx = context.Background()
|
|
|
|
}
|
|
|
|
res := redis.Wrapper.TTL(ctx, instanceFlag, key)
|
|
|
|
return wrapper.String(res.Result).ToInt64().Value, res.Err
|
|
|
|
}
|
|
|
|
|
2024-06-21 14:02:50 +08:00
|
|
|
// Set 设置缓存
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 12:42 2023/3/25
|
|
|
|
func (r *Redis) Set(ctx context.Context, instanceFlag string, key string, value string, ttl int64) error {
|
|
|
|
if nil == ctx {
|
|
|
|
ctx = context.Background()
|
|
|
|
}
|
|
|
|
return redis.Wrapper.SetEx(ctx, instanceFlag, key, value, ttl, false).Err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Get 获取redis中的原始数据
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 17:52 2023/4/26
|
|
|
|
func (r *Redis) Get(ctx context.Context, instanceFlag string, key string) (string, error) {
|
|
|
|
if nil == ctx {
|
|
|
|
ctx = context.Background()
|
|
|
|
}
|
|
|
|
res := redis.Wrapper.Get(ctx, instanceFlag, key)
|
|
|
|
return res.Result, res.Err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Delete 删除缓存
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 12:41 2023/3/25
|
|
|
|
func (r *Redis) Delete(ctx context.Context, instanceFlag string, key string) error {
|
|
|
|
if nil == ctx {
|
|
|
|
ctx = context.Background()
|
|
|
|
}
|
|
|
|
return redis.Wrapper.Del(ctx, instanceFlag, key).Err
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetWithParse ...
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 12:26 2024/6/21
|
|
|
|
func (r *Redis) GetWithParse(ctx context.Context, cacheInstanceFlag string, key string, parseFunc cacheAbstract.ResultParseFunc) (string, error) {
|
|
|
|
var (
|
|
|
|
res string
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
if res, err = r.Get(ctx, cacheInstanceFlag, key); nil != err {
|
|
|
|
return "", err
|
|
|
|
}
|
|
|
|
if nil == parseFunc {
|
|
|
|
return res, nil
|
|
|
|
}
|
|
|
|
return res, parseFunc(res)
|
|
|
|
}
|