package redsync
import (
"github.com/go-redsync/redsync/v4"
"github.com/go-redsync/redsync/v4/redis/goredis/v9"
goredislib "github.com/redis/go-redis/v9"
"gitlab.hexcloud.cn/hicloud/payflow/conf"
"gitlab.hexcloud.cn/hicloud/payflow/pkg/redis"
"strconv"
)
var RedSyncClient *redsync.Redsync
func NewRedSyncClient(cfg *redis.RedisConfig) {
db, _ := strconv.Atoi(cfg.Db)
client := goredislib.NewClient(&goredislib.Options{
Addr: cfg.Addr,
Password: cfg.Password,
DB: db,
DialTimeout: 2,
})
pool := goredis.NewPool(client)
//创建一个用于获得互斥的重新同步实例
RedSyncClient = redsync.New(pool)
}
func mutexLock(mutexName string) {
mutex := conf.RedSync.NewMutex(mutexName)
//获取给定互斥对象的锁。成功之后,没有其他人 可以获得相同的锁(相同的互斥体名称),直到我们解锁它。
if err := mutex.Lock(); err != nil {
}
}
func mutexUnlock(mutexName string) {
mutex := conf.RedSync.NewMutex(mutexName)
//释放锁,以便其他进程或线程可以获得锁。
if ok, err := mutex.Unlock(); !ok || err != nil {
}
}
golang 集成 redsync
最新推荐文章于 2024-05-27 19:35:42 发布