Login
网站首页 > 文章中心 > 其它

[Go] redis分布式锁的go-redis实现

作者:小编 更新时间:2023-08-07 10:19:30 浏览量:425人看过

[Go] redis分布式锁的go-redis实现-图1

在分布式的业务中 , 如果有的共享资源需要安全的被访问和处理 , 那就需要分布式锁

分布式锁的几个原则;

①「锁的互斥性」:在分布式集群应用中,共享资源的锁在同一时间只能被一个对象获取.

redis实现分布式锁主要靠setnx命令

① 当key存在时失败 , 保证互斥性

package redis

import (
"context"
"github.com/go-redis/redis/v8"
"github.com/taoshihan1991/miaosha/setting"
"log"
"sync"
"time"
)

var rdb *redis.Client
var ctx = context.Background()
var mutex sync.Mutex

func NewRedis() {
rdb = redis.NewClient(redis.Options{
    Addr:     setting.Redis.Ip + ":" + setting.Redis.Port,
    Password: "", // no password set
    DB:       0,  // use default DB
    })
}
func Lock(key string) bool {
bool, err := rdb.SetNX(ctx, key, 1, 10*time.Second).Result()
if err != nil {
return bool
}
func UnLock(key string) int64 {
nums, err := rdb.Del(ctx, key).Result()
if err != nil {
    return 0
return nums
}

以上就是土嘎嘎小编为大家整理的[Go] redis分布式锁的go-redis实现相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章