快活林资源网 Design By www.csstdc.com
在分布式的业务中 , 如果有的共享资源需要安全的被访问和处理 , 那就需要分布式锁
分布式锁的几个原则;
1.「锁的互斥性」:在分布式集群应用中,共享资源的锁在同一时间只能被一个对象获取。
2. 「可重入」:为了避免死锁,这把锁是可以重入的,并且可以设置超时。
3. 「高效的加锁和解锁」:能够高效的加锁和解锁,获取锁和释放锁的性能也好。
4. 「阻塞、公平」:可以根据业务的需要,考虑是使用阻塞、还是非阻塞,公平还是非公平的锁。
redis实现分布式锁主要靠setnx命令
1. 当key存在时失败 , 保证互斥性
2.设置了超时 , 避免死锁
3.利用mutex保证当前程序不存在并发冲突问题
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 { mutex.Lock() defer mutex.Unlock() bool, err := rdb.SetNX(ctx, key, 1, 10*time.Second).Result() if err != nil { log.Println(err.Error()) } return bool } func UnLock(key string) int64 { nums, err := rdb.Del(ctx, key).Result() if err != nil { log.Println(err.Error()) return 0 } return nums }
快活林资源网 Design By www.csstdc.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
快活林资源网 Design By www.csstdc.com
暂无评论...
更新日志
2024年05月08日
2024年05月08日
- 童丽《相思泪BSCD》[WAV+CUE][419M]
- 下一站江湖2少女之恼任务怎么做 触发方式分享
- 出发吧麦芬影袭宠物推荐 选什么宠物好
- 少年西游记2真伤输出流怎么玩 配队玩法攻略
- dnf焚烬龙焰武器怎么搞
- dnf护石颜色怎么调
- dnf搬砖怎么换人民币
- 《物语系列番外&怪物季》公开「愚物语&抚物语」宣传片
- 《Dota2》屠夫成为最受欢迎的英雄!共计登场10亿次
- 《昨日之歌》主题曲乐团 yourness 将在台举行专场
- 龙千玉2022-九月玫瑰[豪记][WAV+CUE]
- 轮回乐队-[我的太阳](2002)[WAV+CUE]
- JacobCollier《DjesseVol.3》(2020)Hi-Res96kHz_24bit
- 陈道明不惜破坏形象演《庆余年》 导演称拍得非常过瘾
- 游民晨播报:《哈迪斯2》EA版现已推出 《堕落之主》确认加入XGP