日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

go?redis之redigo的使用_Golang

作者:General_zy ? 更新時(shí)間: 2022-07-30 編程語言

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

安裝

go-redis 三方庫為我們封裝了很多函數(shù)來執(zhí)行 Redis 命令,而 redigo 三方庫只有一個(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類型操作

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è)置過期時(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表示自動定義),按需分配
? ? ? ? IdleTimeout:300, ? ?//連接關(guān)閉時(shí)間 300秒 (300秒不使用自動關(guān)閉) ? ?
? ? ? ? Dial: func() (redis.Conn ,error){ ? ? //要連接的redis數(shù)據(jù)庫
? ? ? ? ? ? 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)閉連接池
}

原文鏈接:https://blog.csdn.net/General_zy/article/details/124831998

欄目分類
最近更新