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-12-24Redis资料:新手入门快速指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-07Redis高并发入门详解
- 2024-12-07Redis缓存入门:新手必读指南
- 2024-12-07Redis缓存入门:新手必读教程
- 2024-12-07Redis入门:新手必备的简单教程
- 2024-12-07Redis入门:新手必读的简单教程
- 2024-12-06Redis入门教程:从安装到基本操作
- 2024-12-06Redis缓存入门教程:轻松掌握缓存技巧