Fetch the repository succeeded.
package redis
import (
redis "github.com/redis/go-redis/v9"
"time"
)
type Client struct {
redis.Cmdable
}
type Config struct {
PoolSize int `yaml:"poolSize"`
Addr []string `yaml:"addr"`
Pwd string `yaml:"pwd"`
DialTimeout time.Duration `yaml:"DialTimeout"`
ReadTimeout time.Duration `yaml:"ReadTimeout"`
WriteTimeout time.Duration `yaml:"WriteTimeout"`
}
func NewRedis(o *Config) (client *Client, err error) {
var redisCli redis.Cmdable
if len(o.Addr) > 1 {
redisCli = redis.NewClusterClient(
&redis.ClusterOptions{
Addrs: o.Addr,
PoolSize: o.PoolSize,
DialTimeout: o.DialTimeout,
ReadTimeout: o.ReadTimeout,
WriteTimeout: o.WriteTimeout,
Password: o.Pwd,
},
)
} else {
redisCli = redis.NewClient(
&redis.Options{
Addr: o.Addr[0],
DialTimeout: o.DialTimeout,
ReadTimeout: o.ReadTimeout,
WriteTimeout: o.WriteTimeout,
Password: o.Pwd,
PoolSize: o.PoolSize,
DB: 0,
},
)
}
err = redisCli.Ping(ctx).Err()
if nil != err {
panic(err)
}
client = new(Client)
client.Cmdable = redisCli
return client, nil
}
func (c *Client) Process(cmd redis.Cmder) error {
switch redisCli := c.Cmdable.(type) {
case *redis.ClusterClient:
return redisCli.Process(ctx, cmd)
case *redis.Client:
return redisCli.Process(ctx, cmd)
default:
return nil
}
}
func (c *Client) Close() error {
switch redisCli := c.Cmdable.(type) {
case *redis.ClusterClient:
return redisCli.Close()
case *redis.Client:
return redisCli.Close()
default:
return nil
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。