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-03-21redisinsight-v2
- 2024-02-26Typed property App\Api\Mapper\GamePropsConfigMapper::$apiRedis must not be accessed before initia-icode9专业技术文章分享
- 2024-02-21redisson getlock
- 2024-02-20redis config
- 2024-02-20redis leaderboard
- 2024-01-23缓存选型:Redis or MemCache
- 2024-01-22面试官:Redis持久化能关吗?怎么关?
- 2024-01-21Redis压测工具redis-benchmark-icode9专业技术文章分享
- 2024-01-19这才是你应该了解的Redis数据结构!
- 2024-01-18Redis系列:使用 Redis Module 扩展功能