最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go redis之redigo的使用

 更新時間:2022年06月02日 15:47:42   作者:General_zy  
本文主要介紹了go redis之redigo的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

本文主要介紹了go redis之redigo的使用,分享給大家,具體如下:

安裝

go-redis 三方庫為我們封裝了很多函數(shù)來執(zhí)行 Redis 命令,而 redigo 三方庫只有一個 Do 函數(shù)執(zhí)行 Redis 命令,更接近使用 redis-cli 操作 Redis。
go-redis 支持連接哨兵及集群模式的Redis

go get github.com/gomodule/redigo
go get github.com/go-redis/redis/v8

鏈接Redis

func main() {
    c, err := redis.Dial("tcp", "localhost:6379")
    if err != nil {
        fmt.Println("conn redis failed,", err)
        return
    } 
    fmt.Println("redis conn success")
    defer c.Close()
}

String類型操作

func main() {
? ? c, err := redis.Dial("tcp", "localhost:6379")
? ? if err != nil {
? ? ? ? fmt.Println("conn redis failed,", err)
? ? ? ? return
? ? }

? ? defer c.Close()
? ? _, err = c.Do("Set", "abc", 100)
? ? if err != nil {
? ? ? ? fmt.Println(err)
? ? ? ? return
? ? }

? ? r, err := redis.Int(c.Do("Get", "abc"))
? ? if err != nil {
? ? ? ? fmt.Println("get abc failed,", err)
? ? ? ? return
? ? }

? ? fmt.Println(r)
}
func main() {
? ? c, err := redis.Dial("tcp", "localhost:6379")
? ? if err != nil {
? ? ? ? fmt.Println("conn redis failed,", err)
? ? ? ? return
? ? }

? ? defer c.Close()
? ? _, err = c.Do("MSet", "abc", 100, "efg", 300)
? ? if err != nil {
? ? ? ? fmt.Println(err)
? ? ? ? return
? ? }

? ? r, err := redis.Ints(c.Do("MGet", "abc", "efg"))
? ? if err != nil {
? ? ? ? fmt.Println("get abc failed,", err)
? ? ? ? return
? ? }

? ? for _, v := range r {
? ? ? ? fmt.Println(v)
? ? }
}

設置過期時間

func main() {
? ? c, err := redis.Dial("tcp", "localhost:6379")
? ? if err != nil {
? ? ? ? fmt.Println("conn redis failed,", err)
? ? ? ? return
? ? }

? ? defer c.Close()
? ? _, err = c.Do("expire", "abc", 10)
? ? if err != nil {
? ? ? ? fmt.Println(err)
? ? ? ? return
? ? }
}
----------------------------
或者這樣也行
do, err := client.Do("set", "name", "1111","EX",5)

List操作

func main() {
? ? c, err := redis.Dial("tcp", "localhost:6379")
? ? if err != nil {
? ? ? ? fmt.Println("conn redis failed,", err)
? ? ? ? return
? ? }

? ? defer c.Close()
? ? _, err = c.Do("lpush", "book_list", "abc", "ceg", 300)
? ? if err != nil {
? ? ? ? fmt.Println(err)
? ? ? ? return
? ? }

? ? r, err := redis.String(c.Do("lpop", "book_list"))
? ? if err != nil {
? ? ? ? fmt.Println("get abc failed,", err)
? ? ? ? return
? ? }

? ? fmt.Println(r)
}

Hash表

func main() {
? ? c, err := redis.Dial("tcp", "localhost:6379")
? ? if err != nil {
? ? ? ? fmt.Println("conn redis failed,", err)
? ? ? ? return
? ? }

? ? defer c.Close()
? ? _, err = c.Do("HSet", "books", "abc", 100)
? ? if err != nil {
? ? ? ? fmt.Println(err)
? ? ? ? return
? ? }

? ? r, err := redis.Int(c.Do("HGet", "books", "abc"))
? ? if err != nil {
? ? ? ? fmt.Println("get abc failed,", err)
? ? ? ? return
? ? }

? ? fmt.Println(r)
}

Redis連接池

var pool *redis.Pool ?//創(chuàng)建redis連接池

func init(){
? ? pool = &redis.Pool{ ? ? //實例化一個連接池
? ? ? ? MaxIdle:16, ? ?//最初的連接數(shù)量
? ? ? ? // MaxActive:1000000, ? ?//最大連接數(shù)量
? ? ? ? MaxActive:0, ? ?//連接池最大連接數(shù)量,不確定可以用0(0表示自動定義),按需分配
? ? ? ? IdleTimeout:300, ? ?//連接關閉時間 300秒 (300秒不使用自動關閉) ? ?
? ? ? ? Dial: func() (redis.Conn ,error){ ? ? //要連接的redis數(shù)據(jù)庫
? ? ? ? ? ? return redis.Dial("tcp","localhost:6379")
? ? ? ? },
? ? }
}

func main(){
? ? c := pool.Get() //從連接池,取一個鏈接
? ? defer c.Close() //函數(shù)運行結束 ,把連接放回連接池

? ? ? ? _,err := c.Do("Set","abc",200)
? ? ? ? if err != nil {
? ? ? ? ? ? fmt.Println(err)
? ? ? ? ? ? return
? ? ? ? }

? ? ? ? r,err := redis.Int(c.Do("Get","abc"))
? ? ? ? if err != nil {
? ? ? ? ? ? fmt.Println("get abc faild :",err)
? ? ? ? ? ? return
? ? ? ? }
? ? ? ? fmt.Println(r)
? ? ? ? pool.Close() //關閉連接池
}

到此這篇關于go redis之redigo的使用的文章就介紹到這了,更多相關go redis redigo內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • GoLang?Time時間操作函數(shù)講解

    GoLang?Time時間操作函數(shù)講解

    在日常開發(fā)中,我們避免不了時間的使用,我們可能需要獲取當前時間,然后格式化保存,也可能需要在時間類型與字符串類型之間相互轉換等。本文將會對?Go?time?包里面的常用函數(shù)和方法進行介紹,需要的可以參考一下
    2023-01-01
  • Go調(diào)用鏈可視化工具使用實例探究

    Go調(diào)用鏈可視化工具使用實例探究

    本文介紹一款工具?go-callvis,它能夠?qū)?Go?代碼的調(diào)用關系可視化出來,并提供了可交互式的?web?服務,在接手他人代碼或調(diào)研一些開源項目時,如果能夠理清其中的代碼調(diào)用鏈路,這將加速我們對實現(xiàn)的理解
    2024-01-01
  • Go切片導致rand.Shuffle產(chǎn)生重復數(shù)據(jù)的原因與解決方案

    Go切片導致rand.Shuffle產(chǎn)生重復數(shù)據(jù)的原因與解決方案

    在 Go 語言的實際開發(fā)中,切片(slice)是一種非常靈活的數(shù)據(jù)結構,然而,由于其底層數(shù)據(jù)共享的特性,在某些情況下可能會導致意想不到的 Bug,本文將詳細分析 rand.Shuffle 之后,切片中的數(shù)據(jù)出現(xiàn)重復的問題,探討其根本原因,并給出最佳解決方案,需要的朋友可以參考下
    2025-02-02
  • 基于go+vue實現(xiàn)的golang每日新聞數(shù)據(jù)瀏覽與檢索平臺(推薦)

    基于go+vue實現(xiàn)的golang每日新聞數(shù)據(jù)瀏覽與檢索平臺(推薦)

    gonews是基于 go+vue 實現(xiàn)的golang每日新聞瀏覽與檢索平臺,本文通過實例代碼給大家講解,介紹的非常詳細,具有參考借鑒價值,需要的朋友參考下吧
    2018-01-01
  • gorm update傳入struct對象,零值字段不更新的解決方案

    gorm update傳入struct對象,零值字段不更新的解決方案

    這篇文章主要介紹了gorm update傳入struct對象,零值字段不更新的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Golang設計模式之外觀模式講解和代碼示例

    Golang設計模式之外觀模式講解和代碼示例

    外觀是一種結構型設計模式, 能為復雜系統(tǒng)、 程序庫或框架提供一個簡單 (但有限) 的接口,這篇文章就給大家詳細介紹一下Golang的外觀模式,文中有詳細的代碼示例,具有一定的參考價值,需要的朋友可以參考下
    2023-06-06
  • GoLang中panic和recover作用詳解

    GoLang中panic和recover作用詳解

    panic?和?recover?是?Go?語言中用于處理異常和錯誤的機制,能夠幫助我們應對意外情況并使程序更加健壯,這篇文章主要介紹了GoLang中panic和recover作用詳解,需要的朋友可以參考下
    2024-05-05
  • Go函數(shù)的使用示例教程

    Go函數(shù)的使用示例教程

    這篇文章主要介紹了Go函數(shù)的使用示例,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • Go語言select語句用法示例

    Go語言select語句用法示例

    這篇文章主要為大家介紹了Go語言select語句用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Go語言中的Struct結構體

    Go語言中的Struct結構體

    這篇文章介紹了Go語言中的Struct結構體,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07

最新評論

乌海市| 涡阳县| 永康市| 康乐县| 汽车| 湟源县| 黄浦区| 孝义市| 辛集市| 重庆市| 新巴尔虎右旗| 德保县| 仙居县| 民县| 岱山县| 建水县| 托克逊县| 闽清县| 紫云| 定远县| 隆安县| 凤翔县| 沂源县| 广汉市| 宿松县| 盈江县| 哈尔滨市| 北宁市| 汕头市| 峨眉山市| 丽水市| 南汇区| 霍林郭勒市| 清徐县| 桑日县| 马山县| 昌都县| 同心县| 酉阳| 花莲县| 屏南县|