国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Go重寫Redis中間件 - GO實現(xiàn)TCP服務(wù)器

這篇具有很好參考價值的文章主要介紹了Go重寫Redis中間件 - GO實現(xiàn)TCP服務(wù)器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

GO實現(xiàn)TCP服務(wù)器

首先新建一個項目go-redis,將config和lib包放到項目中,config.go用來解析配置,比如端口、功能、DB數(shù);lib包有兩個文件夾,分別是logger和sync,其中l(wèi)ogger.go是一個日志框架,sync包中的bool.go包裝了atomic操作,因為atomic原生沒有bool類型,所以將uint32類型改造成bool型的atomic,wait.go包裝了WaitGroup等待組,多做的工作是將等待組增加一個超時功能,redis.conf配置文件寫明我們redis要寫在的端口和監(jiān)聽地址

正式開始

  • 新建一個接口文件夾,放一些全局用到的接口,首先是TCP層的handler.go,這個接口的目的是讓handler.go代表一個抽象的業(yè)務(wù)邏輯,讓TCP服務(wù)器只處理TCP層的連接,具體的業(yè)務(wù)扔給handler去做
type Handler interface {
	Handle(ctx context.Context, conn net.Conn)
	Close() error
}

TCP服務(wù)器開發(fā)

server.go

net.listen服務(wù)器監(jiān)聽端口地址,如果監(jiān)聽成功就調(diào)用Accept阻塞等待客戶端連接,但這里我們將listener傳給ListenAndServe方法,該方法傳入三個參數(shù),分別是listener,處理客戶端業(yè)務(wù)的handler和傳遞關(guān)閉信號的channel,在其中for循環(huán)阻塞等待客戶端連接,新的客戶端過來后一個協(xié)程一個連接,將上下文ctx和conn句柄傳入handler.Handle方法,然后我們只需在main函數(shù)里調(diào)用ListenAndServeWithSignal方法即可,但此時連接關(guān)閉和用戶關(guān)閉窗口統(tǒng)一關(guān)閉所有客戶端連接功能我們還沒有處理

接下來我們就要著手改進,第一點就是我們這個for循環(huán)在不斷阻塞接收新的連接,如果接收新連接出現(xiàn)錯誤后直接break,但此時我們已經(jīng)有一些連接正在服務(wù),所以我們需要等待已經(jīng)連接的客戶端退出,這里我們就要用到WaitGroup等待組,具體用法就是在每接收一個新的客戶端連接后WaitGroup.Add(1),在接收新連接出錯也就是break跳出fo文章來源地址http://www.zghlxwxcb.cn/news/detail-605757.html

到了這里,關(guān)于Go重寫Redis中間件 - GO實現(xiàn)TCP服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Go Gin Gorm Casbin權(quán)限管理實現(xiàn) - 3. 實現(xiàn)Gin鑒權(quán)中間件

    Go Gin Gorm Casbin權(quán)限管理實現(xiàn) - 3. 實現(xiàn)Gin鑒權(quán)中間件

    Casbin是用于Golang項目的功能強大且高效的開源訪問控制庫。 強大通用也意味著概念和配置較多,具體到實際應(yīng)用(以Gin Web框架開發(fā))需要解決以下問題: 權(quán)限配置的存儲,以及 增刪改查 Gin框架的中間件如何實現(xiàn) 經(jīng)過一番摸索實踐出經(jīng)驗,計劃分為三個章節(jié),循序漸進的介紹

    2024年02月07日
    瀏覽(22)
  • Go Gin中間件

    Go Gin中間件

    Gin是一個用Go語言編寫的Web框架,它提供了一種簡單的方式來創(chuàng)建HTTP路由和處理HTTP請求。中間件是Gin框架中的一個重要概念,它可以用來處理HTTP請求和響應(yīng),或者在處理請求之前和之后執(zhí)行一些操作。 以下是關(guān)于Gin中間件開發(fā)的一些基本信息: 中間件的定義 :在Gin中,中

    2024年02月05日
    瀏覽(28)
  • GO——gin中間件和路由

    GO——gin中間件和路由

    中間件 參考:https://learnku.com/articles/66234 結(jié)構(gòu) 中間件是函數(shù) 中間件函數(shù)被放在調(diào)用鏈上 調(diào)用鏈的末尾是路由path對應(yīng)的函數(shù) 執(zhí)行過程 net/http包調(diào)用到gin的serverHTTP 參考:go/pkg/mod/github.com/gin-gonic/gin@v1.7.7/gin.go:506 通過path找到路由對應(yīng)的處理鏈,賦值給context 參考:go/pkg/mod/git

    2024年01月17日
    瀏覽(22)
  • 使用Go編寫HTTP中間件

    使用Go編寫HTTP中間件

    在Go語言中,HTTP中間件是一種處理HTTP請求和響應(yīng)的函數(shù),它可以攔截到請求并對其進行處理,然后再將請求傳遞給下一個中間件或目標(biāo)處理程序。HTTP中間件在Web應(yīng)用程序中非常常見,它提供了一種機制來執(zhí)行各種任務(wù),例如身份驗證、授權(quán)、日志記錄和錯誤處理等。 下面是

    2024年01月23日
    瀏覽(27)
  • GO自研微服務(wù)框架-中間件

    中間件的作用是給應(yīng)用添加一些額外的功能,但是并不會影響原有應(yīng)用的編碼方式,想用的時候直接添加,不想用可以很輕松的去除,做到所謂的可插拔。 中間件的實現(xiàn)位置在哪里? 不能耦合在用戶的代碼中 需要獨立存在,但又能拿到上下文,并能做出影響 位置:在處理器

    2024年01月18日
    瀏覽(27)
  • Gin中間件的詳解 ,用Jwt-go 和 Gin 的安全的登陸的中間件

    Gin 在不同的group 設(shè)置不同的中間件或者過濾器 Gin 的group下的路由上中間件或過濾器 用Jwt-go 和 Gin 的安全的登陸的中間件 JWT 類,它基本有所有基本功能,包括:GenerateToken,GenerateRefreshToken,?ValidateToken,?ParseToken 1. Gin 在不同的group 設(shè)置不同的中間件或者過濾器 Golang 中的 gin

    2024年02月15日
    瀏覽(22)
  • Go學(xué)習(xí)第十七章——Gin中間件與路由

    Go學(xué)習(xí)第十七章——Gin中間件與路由

    Gin框架允許開發(fā)者在處理請求的過程中,加入用戶自己的鉤子(Hook)函數(shù)。這個鉤子函數(shù)就叫中間件,中間件適合處理一些公共的業(yè)務(wù)邏輯,比如登錄認證、權(quán)限校驗、數(shù)據(jù)分頁、記錄日志、耗時統(tǒng)計等 即比如,如果訪問一個網(wǎng)頁的話,不管訪問什么路徑都需要進行登錄,

    2024年02月07日
    瀏覽(21)
  • [每周一更]-(第83期):Go新項目-Gin中間件的使用和案例(10)

    [每周一更]-(第83期):Go新項目-Gin中間件的使用和案例(10)

    在 Gin 中,中間件是一種用于處理 HTTP 請求和響應(yīng)的功能強大的機制。中間件是一段位于請求處理鏈和最終處理器之間的代碼, 它可以截獲請求、執(zhí)行預(yù)處理操作,修改請求或響應(yīng),然后將控制權(quán)傳遞給下一個中間件或最終的請求處理器。 中間件在業(yè)務(wù)使用中,方便注入一些

    2024年01月20日
    瀏覽(26)
  • 華為云應(yīng)用中間件DCS系列—Redis實現(xiàn)(社交APP)實時評論

    華為云應(yīng)用中間件DCS系列—Redis實現(xiàn)(社交APP)實時評論

    云服務(wù)、API、SDK,調(diào)試,查看,我都行 閱讀短文您可以學(xué)習(xí)到:應(yīng)用中間件系列之Redis實現(xiàn)(社交APP)實時評論 華為云開發(fā)者插件(Huawei Cloud Toolkit),作為華為云圍繞其產(chǎn)品能力向開發(fā)者桌面上的延伸,幫助開發(fā)者快速在本地連接華為云,打通華為云到開發(fā)者的最后一公里

    2024年02月07日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包