go-redis分布式锁
2022/4/17 19:42:41
本文主要是介绍go-redis分布式锁,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
redis分布式锁
package main import ( "fmt" "log" "sync" "time" "github.com/go-redis/redis" ) // 声明一个全局的rdb变量 var rdb *redis.Client var mutex sync.Mutex // 初始化连接 func initClient() (err error) { rdb = redis.NewClient(&redis.Options{ Addr: "ip:port", Password: "", DB: 7, }) _, err = rdb.Ping().Result() if err != nil { return err } return nil } // 加锁 func Lock(key string) bool { // ex:设置默认过期时间10秒,防止死锁 ex:=10*time.Second mutex.Lock() defer mutex.Unlock() bool,err := rdb.SetNX(key, `{"lock":1}`, ex).Result() if err != nil { return bool } return bool } // 解锁 func UnLock(key string) int64 { nums, err := rdb.Del(key).Result() if err != nil { log.Println(err.Error()) return 0 } return nums } func main() { err := initClient() if err != nil { fmt.Println(err) } b := Lock("lock") if b == true{ // 抢锁成功 执行自己的逻辑 nums:=UnLock("lock") if nums == 1{ // 释放锁成功 } }else { // 抢锁失败 } }
这篇关于go-redis分布式锁的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-08阿里云Redis项目实战入门教程
- 2024-11-08阿里云Redis资料:新手入门与初级使用指南
- 2024-11-08阿里云Redis教程:新手入门及实用指南
- 2024-11-07阿里云Redis学习入门:新手必读指南
- 2024-11-07阿里云Redis学习入门:从零开始的操作指南
- 2024-11-07阿里云Redis学习:初学者指南
- 2024-11-06阿里云Redis入门教程:轻松搭建与使用指南
- 2024-11-02Redis项目实战:新手入门教程
- 2024-10-22Redis入门教程:轻松掌握数据存储与操作
- 2024-10-22Redis缓存入门教程:快速掌握Redis缓存基础知识