代码拉取完成,页面将自动刷新
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
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。