- update redis
continuous-integration/drone/push Build is failing Details
continuous-integration/drone/tag Build was killed Details

master v1.0.19
李光春 2 years ago
parent 6a2d8ffdae
commit 75a6f160b9

@ -1,3 +1,3 @@
package dorm package dorm
const Version = "1.0.18" const Version = "1.0.19"

@ -6,32 +6,39 @@ import (
"time" "time"
) )
// GttStringFunc String缓存结构
type GttStringFunc func() string
// GttInterfaceFunc Interface缓存结构
type GttInterfaceFunc func() interface{}
// RedisCacheConfig 配置 // RedisCacheConfig 配置
type RedisCacheConfig struct { type RedisCacheConfig struct {
DefaultExpiration time.Duration // 过期时间 Expiration time.Duration // 过期时间
} }
// RedisClientCache https://github.com/go-redis/redis // RedisClientCache https://github.com/go-redis/redis
type RedisClientCache struct { type RedisClientCache struct {
config *RedisCacheConfig defaultExpiration time.Duration // 过期时间
operation *RedisClient // 操作 operation *RedisClient // 操作
GetterString func() string // 不存在的操作 GetterString GttStringFunc // 不存在的操作
GetterInterface func() interface{} // 不存在的操作 GetterInterface GttInterfaceFunc // 不存在的操作
} }
// NewCache 实例化 // NewCache 实例化
func (c *RedisClient) NewCache(config *RedisCacheConfig) *RedisClientCache { func (r *RedisClient) NewCache(config *RedisCacheConfig) *RedisClientCache {
cc := &RedisClientCache{config: config} return &RedisClientCache{
cc.operation = c defaultExpiration: config.Expiration,
return cc operation: r,
}
} }
// NewCacheDefaultExpiration 实例化 // NewCacheDefaultExpiration 实例化
func (c *RedisClient) NewCacheDefaultExpiration() *RedisClientCache { func (r *RedisClient) NewCacheDefaultExpiration() *RedisClientCache {
cc := &RedisClientCache{} return &RedisClientCache{
cc.config.DefaultExpiration = time.Minute * 30 // 默认过期时间 defaultExpiration: time.Minute * 30,
cc.operation = c operation: r,
return cc }
} }
// GetString 缓存操作 // GetString 缓存操作
@ -44,7 +51,7 @@ func (rc *RedisClientCache) GetString(ctx context.Context, key string) (ret stri
// 如果不存在则调用GetterString // 如果不存在则调用GetterString
ret, err := rc.operation.Get(ctx, key).Result() ret, err := rc.operation.Get(ctx, key).Result()
if err != nil { if err != nil {
rc.operation.Set(ctx, key, f(), rc.config.DefaultExpiration) rc.operation.Set(ctx, key, f(), rc.defaultExpiration)
ret, _ = rc.operation.Get(ctx, key).Result() ret, _ = rc.operation.Get(ctx, key).Result()
} }
@ -63,7 +70,7 @@ func (rc *RedisClientCache) GetInterface(ctx context.Context, key string, result
ret, err := rc.operation.Get(ctx, key).Result() ret, err := rc.operation.Get(ctx, key).Result()
if err != nil { if err != nil {
rc.operation.Set(ctx, key, f(), rc.config.DefaultExpiration) rc.operation.Set(ctx, key, f(), rc.defaultExpiration)
ret, _ = rc.operation.Get(ctx, key).Result() ret, _ = rc.operation.Get(ctx, key).Result()
} }
@ -85,5 +92,5 @@ func (rc *RedisClientCache) GetInterfaceKey(ctx context.Context, key string, res
// SetInterfaceKey 设置key值 // SetInterfaceKey 设置key值
func (rc *RedisClientCache) SetInterfaceKey(ctx context.Context, key string, value interface{}) (string, error) { func (rc *RedisClientCache) SetInterfaceKey(ctx context.Context, key string, value interface{}) (string, error) {
marshal, _ := json.Marshal(value) marshal, _ := json.Marshal(value)
return rc.operation.Set(ctx, key, marshal, rc.config.DefaultExpiration).Result() return rc.operation.Set(ctx, key, marshal, rc.defaultExpiration).Result()
} }

@ -7,64 +7,64 @@ import (
) )
// Set 设置一个key的值 // Set 设置一个key的值
func (c *RedisClient) Set(ctx context.Context, key string, value interface{}, expiration time.Duration) *redis.StatusCmd { func (r *RedisClient) Set(ctx context.Context, key string, value interface{}, expiration time.Duration) *redis.StatusCmd {
return c.Db.Set(ctx, key, value, expiration) return r.Db.Set(ctx, key, value, expiration)
} }
// Get 查询key的值 // Get 查询key的值
func (c *RedisClient) Get(ctx context.Context, key string) *redis.StringCmd { func (r *RedisClient) Get(ctx context.Context, key string) *redis.StringCmd {
return c.Db.Get(ctx, key) return r.Db.Get(ctx, key)
} }
// GetSet 设置一个key的值并返回这个key的旧值 // GetSet 设置一个key的值并返回这个key的旧值
func (c *RedisClient) GetSet(ctx context.Context, key string, value interface{}) *redis.StringCmd { func (r *RedisClient) GetSet(ctx context.Context, key string, value interface{}) *redis.StringCmd {
return c.Db.GetSet(ctx, key, value) return r.Db.GetSet(ctx, key, value)
} }
// SetNX 如果key不存在则设置这个key的值 // SetNX 如果key不存在则设置这个key的值
func (c *RedisClient) SetNX(ctx context.Context, key string, value interface{}, expiration time.Duration) *redis.BoolCmd { func (r *RedisClient) SetNX(ctx context.Context, key string, value interface{}, expiration time.Duration) *redis.BoolCmd {
return c.Db.SetNX(ctx, key, value, expiration) return r.Db.SetNX(ctx, key, value, expiration)
} }
// MGet 批量查询key的值 // MGet 批量查询key的值
func (c *RedisClient) MGet(ctx context.Context, keys ...string) *redis.SliceCmd { func (r *RedisClient) MGet(ctx context.Context, keys ...string) *redis.SliceCmd {
return c.Db.MGet(ctx, keys...) return r.Db.MGet(ctx, keys...)
} }
// MSet 批量设置key的值 // MSet 批量设置key的值
// MSet(map[string]interface{}{"key1": "value1", "key2": "value2"}) // MSet(map[string]interface{}{"key1": "value1", "key2": "value2"})
func (c *RedisClient) MSet(ctx context.Context, values map[string]interface{}) *redis.StatusCmd { func (r *RedisClient) MSet(ctx context.Context, values map[string]interface{}) *redis.StatusCmd {
return c.Db.MSet(ctx, values) return r.Db.MSet(ctx, values)
} }
// Incr 针对一个key的数值进行递增操作 // Incr 针对一个key的数值进行递增操作
func (c *RedisClient) Incr(ctx context.Context, key string) *redis.IntCmd { func (r *RedisClient) Incr(ctx context.Context, key string) *redis.IntCmd {
return c.Db.Incr(ctx, key) return r.Db.Incr(ctx, key)
} }
// IncrBy 针对一个key的数值进行递增操作指定每次递增多少 // IncrBy 针对一个key的数值进行递增操作指定每次递增多少
func (c *RedisClient) IncrBy(ctx context.Context, key string, value int64) *redis.IntCmd { func (r *RedisClient) IncrBy(ctx context.Context, key string, value int64) *redis.IntCmd {
return c.Db.IncrBy(ctx, key, value) return r.Db.IncrBy(ctx, key, value)
} }
// Decr 针对一个key的数值进行递减操作 // Decr 针对一个key的数值进行递减操作
func (c *RedisClient) Decr(ctx context.Context, key string) *redis.IntCmd { func (r *RedisClient) Decr(ctx context.Context, key string) *redis.IntCmd {
return c.Db.Decr(ctx, key) return r.Db.Decr(ctx, key)
} }
// DecrBy 针对一个key的数值进行递减操作指定每次递减多少 // DecrBy 针对一个key的数值进行递减操作指定每次递减多少
func (c *RedisClient) DecrBy(ctx context.Context, key string, value int64) *redis.IntCmd { func (r *RedisClient) DecrBy(ctx context.Context, key string, value int64) *redis.IntCmd {
return c.Db.DecrBy(ctx, key, value) return r.Db.DecrBy(ctx, key, value)
} }
// Del 删除key操作支持批量删除 // Del 删除key操作支持批量删除
func (c *RedisClient) Del(ctx context.Context, keys ...string) *redis.IntCmd { func (r *RedisClient) Del(ctx context.Context, keys ...string) *redis.IntCmd {
return c.Db.Del(ctx, keys...) return r.Db.Del(ctx, keys...)
} }
// Keys 按前缀获取所有 key // Keys 按前缀获取所有 key
func (c *RedisClient) Keys(ctx context.Context, prefix string) *redis.SliceCmd { func (r *RedisClient) Keys(ctx context.Context, prefix string) *redis.SliceCmd {
values, _ := c.Db.Keys(ctx, prefix).Result() values, _ := r.Db.Keys(ctx, prefix).Result()
if len(values) <= 0 { if len(values) <= 0 {
return &redis.SliceCmd{} return &redis.SliceCmd{}
} }
@ -72,5 +72,5 @@ func (c *RedisClient) Keys(ctx context.Context, prefix string) *redis.SliceCmd {
for _, value := range values { for _, value := range values {
keys = append(keys, value) keys = append(keys, value)
} }
return c.MGet(ctx, keys...) return r.MGet(ctx, keys...)
} }

@ -6,26 +6,26 @@ import (
) )
// Subscribe 订阅channel // Subscribe 订阅channel
func (c *RedisClient) Subscribe(ctx context.Context, channels ...string) *redis.PubSub { func (r *RedisClient) Subscribe(ctx context.Context, channels ...string) *redis.PubSub {
return c.Db.Subscribe(ctx, channels...) return r.Db.Subscribe(ctx, channels...)
} }
// PSubscribe 订阅channel支持通配符匹配 // PSubscribe 订阅channel支持通配符匹配
func (c *RedisClient) PSubscribe(ctx context.Context, channels ...string) *redis.PubSub { func (r *RedisClient) PSubscribe(ctx context.Context, channels ...string) *redis.PubSub {
return c.Db.PSubscribe(ctx, channels...) return r.Db.PSubscribe(ctx, channels...)
} }
// Publish 将信息发送到指定的channel // Publish 将信息发送到指定的channel
func (c *RedisClient) Publish(ctx context.Context, channel string, message interface{}) *redis.IntCmd { func (r *RedisClient) Publish(ctx context.Context, channel string, message interface{}) *redis.IntCmd {
return c.Db.Publish(ctx, channel, message) return r.Db.Publish(ctx, channel, message)
} }
// PubSubChannels 查询活跃的channel // PubSubChannels 查询活跃的channel
func (c *RedisClient) PubSubChannels(ctx context.Context, pattern string) *redis.StringSliceCmd { func (r *RedisClient) PubSubChannels(ctx context.Context, pattern string) *redis.StringSliceCmd {
return c.Db.PubSubChannels(ctx, pattern) return r.Db.PubSubChannels(ctx, pattern)
} }
// PubSubNumSub 查询指定的channel有多少个订阅者 // PubSubNumSub 查询指定的channel有多少个订阅者
func (c *RedisClient) PubSubNumSub(ctx context.Context, channels ...string) *redis.StringIntMapCmd { func (r *RedisClient) PubSubNumSub(ctx context.Context, channels ...string) *redis.StringIntMapCmd {
return c.Db.PubSubNumSub(ctx, channels...) return r.Db.PubSubNumSub(ctx, channels...)
} }

@ -3,6 +3,6 @@ package dorm
import "github.com/go-redis/redis/v9" import "github.com/go-redis/redis/v9"
// GetDb 获取驱动 // GetDb 获取驱动
func (c *RedisClient) GetDb() *redis.Client { func (r *RedisClient) GetDb() *redis.Client {
return c.Db return r.Db
} }

@ -11,8 +11,8 @@ type ListOperation struct {
} }
// NewListOperation 列表(list)类型数据操作 https://www.tizi365.com/archives/299.html // NewListOperation 列表(list)类型数据操作 https://www.tizi365.com/archives/299.html
func (c *RedisClient) NewListOperation() *ListOperation { func (r *RedisClient) NewListOperation() *ListOperation {
return &ListOperation{db: c.Db, ctx: context.Background()} return &ListOperation{db: r.Db, ctx: context.Background()}
} }
// LPush 从列表左边插入数据 // LPush 从列表左边插入数据

@ -24,7 +24,7 @@ type SimpleCache struct {
} }
// NewSimpleCache 构造函数 // NewSimpleCache 构造函数
func (c *RedisClient) NewSimpleCache(operation *StringOperation, expire time.Duration, serializer string) *SimpleCache { func (r *RedisClient) NewSimpleCache(operation *StringOperation, expire time.Duration, serializer string) *SimpleCache {
return &SimpleCache{ return &SimpleCache{
Operation: operation, // 操作类 Operation: operation, // 操作类
Expire: expire, // 过去时间 Expire: expire, // 过去时间

@ -15,7 +15,7 @@ type SimpleInterfaceCache struct {
} }
// NewSimpleInterfaceCache 构造函数 // NewSimpleInterfaceCache 构造函数
func (c *RedisClient) NewSimpleInterfaceCache(operation *SimpleOperation, expire time.Duration) *SimpleInterfaceCache { func (r *RedisClient) NewSimpleInterfaceCache(operation *SimpleOperation, expire time.Duration) *SimpleInterfaceCache {
return &SimpleInterfaceCache{ return &SimpleInterfaceCache{
Operation: operation, // 操作类 Operation: operation, // 操作类
Expire: expire, // 过期时间 Expire: expire, // 过期时间

@ -15,7 +15,7 @@ type SimpleJsonCache struct {
} }
// NewSimpleJsonCache 构造函数 // NewSimpleJsonCache 构造函数
func (c *RedisClient) NewSimpleJsonCache(operation *StringOperation, expire time.Duration) *SimpleJsonCache { func (r *RedisClient) NewSimpleJsonCache(operation *StringOperation, expire time.Duration) *SimpleJsonCache {
return &SimpleJsonCache{ return &SimpleJsonCache{
Operation: operation, // 操作类 Operation: operation, // 操作类
Expire: expire, // 过期时间 Expire: expire, // 过期时间

@ -11,9 +11,9 @@ type SimpleOperation struct {
ctx context.Context ctx context.Context
} }
func (c *RedisClient) NewSimpleOperation() *SimpleOperation { func (r *RedisClient) NewSimpleOperation() *SimpleOperation {
return &SimpleOperation{ return &SimpleOperation{
db: c.Db, db: r.Db,
ctx: context.Background(), ctx: context.Background(),
} }
} }

@ -14,7 +14,7 @@ type SimpleStringCache struct {
} }
// NewSimpleStringCache 构造函数 // NewSimpleStringCache 构造函数
func (c *RedisClient) NewSimpleStringCache(operation *StringOperation, expire time.Duration) *SimpleStringCache { func (r *RedisClient) NewSimpleStringCache(operation *StringOperation, expire time.Duration) *SimpleStringCache {
return &SimpleStringCache{ return &SimpleStringCache{
Operation: operation, // 操作类 Operation: operation, // 操作类
Expire: expire, // 过期时间 Expire: expire, // 过期时间

@ -11,9 +11,9 @@ type StringOperation struct {
ctx context.Context ctx context.Context
} }
func (c *RedisClient) NewStringOperation() *StringOperation { func (r *RedisClient) NewStringOperation() *StringOperation {
return &StringOperation{ return &StringOperation{
db: c.Db, db: r.Db,
ctx: context.Background(), ctx: context.Background(),
} }
} }

Loading…
Cancel
Save