日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

go语言使用redis —— redigo

發布時間:2025/7/25 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go语言使用redis —— redigo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

go語言使用redis —— redigo

wolfred7464 · 2015-07-24 03:00:00 · 16602 次點擊 · 預計閱讀時間 2 分鐘 · 2分鐘之前 開始瀏覽 ? ? 這是一個創建于 2015-07-24 03:00:00 的文章,其中的信息可能已經有所發展或是發生改變。

redis的client有好多好多,go語言的client在redis官方有兩個推薦,radix和redigo。選擇哪一個好呢?確實很糾結,后來擲硬幣決定選擇redigo了。

redis、go、redigo的安裝就不需要提了,不能強行增加篇幅。

redigo使用起來很人性化,api設計的符合直覺,我對redis了解較少,使用過程中基本沒有遇到障礙。

redigo的使用入門可以去查godoc:http://godoc.org/github.com/garyburd/redigo/redis

接下來就是毫無技術含量的貼代碼了:

連接redis我一般是這樣寫的:

1 c, err := redis.Dial("tcp", "127.0.0.1:6379") 2 if err != nil { 3 fmt.Println(err) 4 return 5 } 6 defer c.Close()

執行命令使用Do函數,跟在redis-cli敲命令的感覺差不多的:

1 v, err := c.Do("SET", "name", "red") 2 if err != nil { 3 fmt.Println(err) 4 return 5 } 6 fmt.Println(v) 7 v, err = redis.String(c.Do("GET", "name")) 8 if err != nil { 9 fmt.Println(err) 10 return 11 } 12 fmt.Println(v)

列表也是一樣:

1 c.Do("lpush", "redlist", "qqq") 2 c.Do("lpush", "redlist", "www") 3 c.Do("lpush", "redlist", "eee")

讀取列表可以for循環遍歷,也可以使用redis.Scan函數:

1 values, _ := redis.Values(c.Do("lrange", "redlist", "0", "100")) 2 3 for _, v := range values { 4 fmt.Println(string(v.([]byte))) 5 } 6 7 // 或者 8 var v1 string 9 redis.Scan(values, &v1) 10 fmt.Println(v1)

管道:

1 c.Send("SET", "name", "red") 2 c.Send("GET", "name") 3 c.Flush() 4 c.Receive() 5 c.Receive()

發布訂閱:

1 func subscribe() { 2 c, err := redis.Dial("tcp", "127.0.0.1:6379") 3 if err != nil { 4 fmt.Println(err) 5 return 6 } 7 defer c.Close() 8 9 psc := redis.PubSubConn{c} 10 psc.Subscribe("redChatRoom") 11 for { 12 switch v := psc.Receive().(type) { 13 case redis.Message: 14 fmt.Printf("%s: message: %s\n", v.Channel, v.Data) 15 case redis.Subscription: 16 fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count) 17 case error: 18 fmt.Println(v) 19 return 20 } 21 } 22 } 1 go subscribe() 2 go subscribe() 3 go subscribe() 4 go subscribe() 5 go subscribe() 6 7 c, err := redis.Dial("tcp", "127.0.0.1:6379") 8 if err != nil { 9 fmt.Println(err) 10 return 11 } 12 defer c.Close() 13 14 for { 15 var s string 16 fmt.Scanln(&s) 17 _, err := c.Do("PUBLISH", "redChatRoom", s) 18 if err != nil { 19 fmt.Println("pub err: ", err) 20 return 21 } 22 }

差不多就是這樣了,確實也沒什么可以解釋的。。。

總結

以上是生活随笔為你收集整理的go语言使用redis —— redigo的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。