主頁 > 知識庫 > redis分布式鎖的go-redis實(shí)現(xiàn)方法詳解

redis分布式鎖的go-redis實(shí)現(xiàn)方法詳解

熱門標(biāo)簽:山東外呼銷售系統(tǒng)招商 超呼電話機(jī)器人 北京400電話辦理收費(fèi)標(biāo)準(zhǔn) 貴州電銷卡外呼系統(tǒng) 鄭州人工智能電銷機(jī)器人系統(tǒng) 魔獸2青云地圖標(biāo)注 宿遷便宜外呼系統(tǒng)平臺(tái) 十堰營銷電銷機(jī)器人哪家便宜 日本中國地圖標(biāo)注

在分布式的業(yè)務(wù)中 , 如果有的共享資源需要安全的被訪問和處理 , 那就需要分布式鎖

分布式鎖的幾個(gè)原則;

1.「鎖的互斥性」:在分布式集群應(yīng)用中,共享資源的鎖在同一時(shí)間只能被一個(gè)對象獲取。

2. 「可重入」:為了避免死鎖,這把鎖是可以重入的,并且可以設(shè)置超時(shí)。

3. 「高效的加鎖和解鎖」:能夠高效的加鎖和解鎖,獲取鎖和釋放鎖的性能也好。

4. 「阻塞、公平」:可以根據(jù)業(yè)務(wù)的需要,考慮是使用阻塞、還是非阻塞,公平還是非公平的鎖。

redis實(shí)現(xiàn)分布式鎖主要靠setnx命令

1. 當(dāng)key存在時(shí)失敗 , 保證互斥性

2.設(shè)置了超時(shí) , 避免死鎖

3.利用mutex保證當(dāng)前程序不存在并發(fā)沖突問題

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
}

到此這篇關(guān)于redis分布式鎖的go-redis實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)redis分布式鎖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 詳解一種用django_cache實(shí)現(xiàn)分布式鎖的方式
  • go如何利用orm簡單實(shí)現(xiàn)接口分布式鎖
  • mongo分布式鎖Java實(shí)現(xiàn)方法(推薦)
  • 淺談Redis分布式鎖的正確實(shí)現(xiàn)方式
  • Java使用Redisson分布式鎖實(shí)現(xiàn)原理
  • Redis Template實(shí)現(xiàn)分布式鎖的實(shí)例代碼
  • Go 語言下基于Redis分布式鎖的實(shí)現(xiàn)方式

標(biāo)簽:果洛 楊凌 江蘇 北京 吉安 大慶 臺(tái)州 朝陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《redis分布式鎖的go-redis實(shí)現(xiàn)方法詳解》,本文關(guān)鍵詞  redis,分布式,鎖,的,go-redis,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《redis分布式鎖的go-redis實(shí)現(xiàn)方法詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于redis分布式鎖的go-redis實(shí)現(xiàn)方法詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章