1 Star 0 Fork 0

mysoft-free/cron-task

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
redisstorage.go 1.98 KB
一键复制 编辑 原始数据 按行查看 历史
JYoung 提交于 2020-06-03 15:34 +08:00 . 增加强制写,增加storage/release方法
package storage
import (
"fmt"
"gitee.com/mysoft-free/cron-task/lib/types"
"github.com/go-redis/redis"
jsoniter "github.com/json-iterator/go"
"time"
)
type RedisStorage struct {
client *redis.Client
key string
}
//初始化自己
func(rd *RedisStorage)Init(addr string ,password string, db int )*RedisStorage{
cl := redis.NewClient(&redis.Options{
Network: "",
Addr: addr,
Dialer: nil,
OnConnect: nil,
Password: password,
DB: db,
MaxRetries: 0,
MinRetryBackoff: 0,
MaxRetryBackoff: 0,
DialTimeout: 0,
ReadTimeout: 0,
WriteTimeout: 0,
PoolSize: 0,
MinIdleConns: 0,
MaxConnAge: 0,
PoolTimeout: 0,
IdleTimeout: 0,
IdleCheckFrequency: 0,
TLSConfig: nil,
})
_,err :=cl.Ping().Result()
if err !=nil {
panic(fmt.Sprint("redis ping fail: %v ",err))
}
rd.client = cl
return rd
}
func(rd *RedisStorage)Get(key string)(interface{},error){
v,err:= rd.client.Get(key).Result()
if err !=nil {
return nil ,err
}
var val types.RunTaskResult
jsoniter.Unmarshal([]byte(v),&val)
return val, nil
}
func(rd *RedisStorage)Set(key string ,value interface{},force bool )error{
v,_ := jsoniter.Marshal(value)
if force{ //强制写
_,err :=rd.client.Set(key,string(v),86400*time.Second).Result()
if err !=nil {
return err
}
return nil
}else{
ok,err := rd.client.SetNX(key,string(v),86400*time.Second).Result()
if !ok {
return err
}
return nil
}
}
func(rd *RedisStorage)Del(key string )error{
rd.client.Del(key)
return nil
}
//释放redis命令
func(rd *RedisStorage)Release(keys ...string )error{
if len(keys) == 0 {//释放全部
_,err :=rd.client.FlushAllAsync().Result()
if err !=nil {
return err
}
return nil
}else{
for _,v := range keys{
allkeys ,_:=rd.client.Keys(v).Result()
if len(allkeys)>0 {
rd.client.Del(allkeys ...).Result()
}
}
return nil
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/mysoft-free/cron-task.git
git@gitee.com:mysoft-free/cron-task.git
mysoft-free
cron-task
cron-task
80b3c92effd7

搜索帮助