go redis之redigo的使用
本文主要介紹了go redis之redigo的使用,分享給大家,具體如下:
安裝
go-redis 三方庫(kù)為我們封裝了很多函數(shù)來(lái)執(zhí)行 Redis 命令,而 redigo 三方庫(kù)只有一個(gè) 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類(lèi)型操作
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) ? ? } }
設(shè)置過(guò)期時(shí)間
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{ ? ? //實(shí)例化一個(gè)連接池 ? ? ? ? MaxIdle:16, ? ?//最初的連接數(shù)量 ? ? ? ? // MaxActive:1000000, ? ?//最大連接數(shù)量 ? ? ? ? MaxActive:0, ? ?//連接池最大連接數(shù)量,不確定可以用0(0表示自動(dòng)定義),按需分配 ? ? ? ? IdleTimeout:300, ? ?//連接關(guān)閉時(shí)間 300秒 (300秒不使用自動(dòng)關(guān)閉) ? ? ? ? ? ? Dial: func() (redis.Conn ,error){ ? ? //要連接的redis數(shù)據(jù)庫(kù) ? ? ? ? ? ? return redis.Dial("tcp","localhost:6379") ? ? ? ? }, ? ? } } func main(){ ? ? c := pool.Get() //從連接池,取一個(gè)鏈接 ? ? defer c.Close() //函數(shù)運(yùn)行結(jié)束 ,把連接放回連接池 ? ? ? ? _,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() //關(guān)閉連接池 }
到此這篇關(guān)于go redis之redigo的使用的文章就介紹到這了,更多相關(guān)go redis redigo內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Golang中g(shù)oroutine執(zhí)行速度的問(wèn)題
這篇文章主要介紹了解決Golang中g(shù)oroutine執(zhí)行速度的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05Go?常見(jiàn)設(shè)計(jì)模式之單例模式詳解
單例模式是設(shè)計(jì)模式中最簡(jiǎn)單的一種模式,單例模式能夠確保無(wú)論對(duì)象被實(shí)例化多少次,全局都只有一個(gè)實(shí)例存在,在Go?語(yǔ)言有多種方式可以實(shí)現(xiàn)單例模式,所以我們今天就來(lái)一起學(xué)習(xí)下吧2023-07-07Go語(yǔ)言自帶測(cè)試庫(kù)testing使用教程
這篇文章主要為大家介紹了Go語(yǔ)言自帶測(cè)試庫(kù)testing使用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07gorm golang 并發(fā)連接數(shù)據(jù)庫(kù)報(bào)錯(cuò)的解決方法
今天小編就為大家分享一篇gorm golang 并發(fā)連接數(shù)據(jù)庫(kù)報(bào)錯(cuò)的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07使用Golang實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲與分析
在網(wǎng)絡(luò)通信中,網(wǎng)絡(luò)數(shù)據(jù)包是信息傳遞的基本單位,抓包是一種監(jiān)控和分析網(wǎng)絡(luò)流量的方法,用于獲取網(wǎng)絡(luò)數(shù)據(jù)包并對(duì)其進(jìn)行分析,本文將介紹如何使用Golang實(shí)現(xiàn)抓包功能,包括網(wǎng)絡(luò)數(shù)據(jù)包捕獲和數(shù)據(jù)包分析,需要的朋友可以參考下2023-11-11Golang Map實(shí)現(xiàn)賦值和擴(kuò)容的示例代碼
這篇文章主要介紹了Golang Map實(shí)現(xiàn)賦值和擴(kuò)容的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04Go語(yǔ)言rune與字符串轉(zhuǎn)換的密切關(guān)系解析
這篇文章主要為大家介紹了Go語(yǔ)言rune與字符串轉(zhuǎn)換的密切關(guān)系示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12