激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Golang - go redis實現滑動窗口限流的方式(redis版)

go redis實現滑動窗口限流的方式(redis版)

2021-02-26 00:48陶士涵 Golang

這篇文章主要介紹了go redis實現滑動窗口限流的方式(redis版),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

之前給大家介紹過單機當前進程的滑動窗口限流 , 這一個是使用go redis list結構實現的滑動窗口限流 , 原理都一樣 , 但是支持分布式

原理可以參考之前的文章介紹

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
func LimitFreqs(queueName string, count uint, timeWindow int64) bool {
 currTime := time.Now().Unix()
 length := uint(ListLen(queueName))
 if length < count {
  ListPush(queueName, currTime)
  return true
 }
 //隊列滿了,取出最早訪問的時間
 earlyTime, _ := strconv.ParseInt(ListIndex(queueName, int64(length)-1), 10, 64)
 //說明最早期的時間還在時間窗口內,還沒過期,所以不允許通過
 if currTime-earlyTime <= timeWindow {
  return false
 } else {
  //說明最早期的訪問應該過期了,去掉最早期的
  ListPop(queueName)
  ListPush(queueName, currTime)
 }
 return true
}

開源作品

開源GO語言在線WEB客服即時通訊管理系統GO-FLY

github地址:go-fly

在線測試地址:https://gofly.sopans.com

附錄:下面看下redis分布式鎖的go-redis實現

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

分布式鎖的幾個原則;

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

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

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

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

 

redis實現分布式鎖主要靠setnx命令

1. 當key存在時失敗 , 保證互斥性

2.設置了超時 , 避免死鎖

3.利用mutex保證當前程序不存在并發沖突問題

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
}

開源作品

開源GO語言在線WEB客服即時通訊管理系統GO-FLY

github地址:go-fly

在線測試地址:https://gofly.sopans.com

到此這篇關于go redis實現滑動窗口限流-redis版的文章就介紹到這了,更多相關go redis滑動窗口限流內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/taoshihan/archive/2020/12/14/14134840.html

延伸 · 閱讀

精彩推薦
  • Golanggolang的httpserver優雅重啟方法詳解

    golang的httpserver優雅重啟方法詳解

    這篇文章主要給大家介紹了關于golang的httpserver優雅重啟的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,...

    helight2992020-05-14
  • GolangGolang中Bit數組的實現方式

    Golang中Bit數組的實現方式

    這篇文章主要介紹了Golang中Bit數組的實現方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    天易獨尊11682021-06-09
  • Golanggo語言制作端口掃描器

    go語言制作端口掃描器

    本文給大家分享的是使用go語言編寫的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • Golanggolang如何使用struct的tag屬性的詳細介紹

    golang如何使用struct的tag屬性的詳細介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細介紹,從例子說起,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看...

    Go語言中文網11352020-05-21
  • Golanggolang 通過ssh代理連接mysql的操作

    golang 通過ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過ssh代理連接mysql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    a165861639710342021-03-08
  • Golanggo日志系統logrus顯示文件和行號的操作

    go日志系統logrus顯示文件和行號的操作

    這篇文章主要介紹了go日志系統logrus顯示文件和行號的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    SmallQinYan12302021-02-02
  • Golanggolang json.Marshal 特殊html字符被轉義的解決方法

    golang json.Marshal 特殊html字符被轉義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉義的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    李浩的life12792020-05-27
  • GolangGolang通脈之數據類型詳情

    Golang通脈之數據類型詳情

    這篇文章主要介紹了Golang通脈之數據類型,在編程語言中標識符就是定義的具有某種意義的詞,比如變量名、常量名、函數名等等,Go語言中標識符允許由...

    4272021-11-24
主站蜘蛛池模板: 精品国产一区二区亚洲人成毛片 | 91成人一区二区三区 | 性色吧| 爱草成年 | www.48xx.com| 国产精品色综合 | 日韩欧美电影一区二区三区 | 国产一国产一级毛片视频在线 | 九草网 | 色日本视频 | 精品国产一区二区三区天美传媒 | 性插视频| 国产精品久久久久一区二区 | 成人影片在线免费观看 | 国产一级毛片av | 国产精品av久久久久久久久久 | 国产精品久久久久久久不卡 | 国产免费观看一区二区三区 | 91久久久久久久久久久久久久 | omofun 动漫在线观看 | 日韩黄色av | 香蕉久久久精品 | 欧美18—19sex性hd按摩 | 欧美成人三级大全 | 一区二区三高清 | 欧美成人一区二区三区电影 | 欧美一级性 | 特黄一区二区三区 | 亚洲成人第一页 | 91久久国产综合精品女同国语 | 国产精品久久久久久久久久久天堂 | 青青草成人影视 | 一级片九九| 欧美性受ⅹ╳╳╳黑人a性爽 | 成人国产免费观看 | 国产乱淫av | 成人啪啪18免费网站 | 免费看毛片网站 | 国产精品hd免费观看 | 成年人激情在线 | 亚洲视频欧美 |