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) ? ? } }
設(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{ ? ? //實例化一個連接池 ? ? ? ? MaxIdle:16, ? ?//最初的連接數(shù)量 ? ? ? ? // MaxActive:1000000, ? ?//最大連接數(shù)量 ? ? ? ? MaxActive:0, ? ?//連接池最大連接數(shù)量,不確定可以用0(0表示自動定義),按需分配 ? ? ? ? IdleTimeout:300, ? ?//連接關(guān)閉時間 300秒 (300秒不使用自動關(guān)閉) ? ? ? ? ? ? Dial: func() (redis.Conn ,error){ ? ? //要連接的redis數(shù)據(jù)庫 ? ? ? ? ? ? return redis.Dial("tcp","localhost:6379") ? ? ? ? }, ? ? } } func main(){ ? ? c := pool.Get() //從連接池,取一個鏈接 ? ? defer c.Close() //函數(shù)運行結(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Golang中g(shù)oroutine執(zhí)行速度的問題
這篇文章主要介紹了解決Golang中g(shù)oroutine執(zhí)行速度的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05gorm golang 并發(fā)連接數(shù)據(jù)庫報錯的解決方法
今天小編就為大家分享一篇gorm golang 并發(fā)連接數(shù)據(jù)庫報錯的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07使用Golang實現(xiàn)對網(wǎng)絡(luò)數(shù)據(jù)包的捕獲與分析
在網(wǎng)絡(luò)通信中,網(wǎng)絡(luò)數(shù)據(jù)包是信息傳遞的基本單位,抓包是一種監(jiān)控和分析網(wǎng)絡(luò)流量的方法,用于獲取網(wǎng)絡(luò)數(shù)據(jù)包并對其進(jìn)行分析,本文將介紹如何使用Golang實現(xiàn)抓包功能,包括網(wǎng)絡(luò)數(shù)據(jù)包捕獲和數(shù)據(jù)包分析,需要的朋友可以參考下2023-11-11Go語言rune與字符串轉(zhuǎn)換的密切關(guān)系解析
這篇文章主要為大家介紹了Go語言rune與字符串轉(zhuǎn)換的密切關(guān)系示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12