成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Golang 官方推薦使用的 Redis 客戶端 Redigo

存儲 存儲軟件 Redis
本文我們介紹了 Golang 官方推薦的操作 Redis 的三方庫 redigo,它僅需使用 Do 函數執行 Redis 所有命令,它還提供了很多助手函數幫助我們更加方便操作 Redis。

 [[414601]]

01介紹

在之前的文章介紹過 Golang 操作 Redis 的三方庫 go-redis,本文主要介紹另外一個 Golang 操作 Redis 的三方庫 redigo,它是 Golang 官方推薦使用的 Redis 客戶端。

go-redis 三方庫為我們封裝了很多函數來執行 Redis 命令,而 redigo 三方庫只有一個 Do 函數執行 Redis 命令,更接近使用 redis-cli 操作 Redis,這一點是我個人比較喜歡的,只要熟悉 Redis,就可以輕松使用 redigo 作為客戶端操作 Redis,而不需要再去記三方庫封裝的函數。

使用 go get 命令安裝 redigo:

  1. go get github.com/gomodule/redigo/redis 

redigo 庫中的 Conn 接口是操作 Redis 的主要接口。

  1. type Conn interface { 
  2.  // Close closes the connection
  3.  Close() error 
  4.  // Err returns a non-nil value when the connection is not usable. 
  5.  Err() error 
  6.  // Do sends a command to the server and returns the received reply. 
  7.  Do(commandName string, args ...interface{}) (reply interface{}, err error) 
  8.  // Send writes the command to the client's output buffer. 
  9.  Send(commandName string, args ...interface{}) error 
  10.  // Flush flushes the output buffer to the Redis server. 
  11.  Flush() error 
  12.  // Receive receives a single reply from the Redis server 
  13.  Receive() (reply interface{}, err error) 

閱讀 redigo 庫的源碼,我們可以發現 Conn 接口包含 6 個方法,本文我們主要使用 Do 和 Close。

02創建連接

redigo 庫提供了多個函數創建連接,本文我們使用 Dial 函數創建連接,此外,還可以使用 DialURL 函數和 NewConn 函數創建連接,限于篇幅,本文不準備逐一介紹。

示例代碼:

  1. // 連接 redis-server 
  2. // 創建連接 
  3. c, err := redis.Dial("tcp"":6379"
  4. if err != nil { 
  5.   fmt.Printf("redis.Dial() error:%v", err) 
  6.   return 
  7. // 關閉連接 
  8. defer c.Close() 

閱讀上面這段代碼,我們使用 Dial 函數創建連接,需要注意的是,我們不要忘記關閉連接。

使用該方式主要是為了讀者朋友們容易理解,建議在生產環境中使用連接池,避免每次執行命令都需要先創建連接,影響性能。

03string 操作

redigo 執行 Redis 命令的通用方法是使用 Conn 接口的 Do 函數,Do 函數可以發送命令給 Redis 服務器,并返回 Redis 服務器的回復。

  1. Do(commandName string, args ...interface{}) (reply interface{}, err error) 

示例代碼:

  1. func stringSet(conn redis.Conn) { 
  2.  replySet, err := conn.Do("SET""key1""value1"
  3.  if err != nil { 
  4.   fmt.Println("SET error: ", err) 
  5.  } 
  6.  fmt.Println(replySet) 

閱讀上面這段代碼,我們使用 Do 函數執行 Redis 的 set 命令,限于篇幅,更多關于 string 類型的 redis 命令示例代碼,請閱讀推送到 GitHub 的本文相關代碼。

04復合類型操作

除了操作字符串,我們還會操作復合類型,redigo 庫中的 Args 類型提供了操作復合類型的方法 AddFlat。

  1. func (args Args) AddFlat(v interface{}) Args 

寫操作:

  1. type User struct { 
  2.  ID   int64  `redis:"id"
  3.  Name string `redis:"name"
  4.  
  5. // struct 
  6. func structAdd(conn redis.Conn) { 
  7.  u1 := User
  8.   ID:   1, 
  9.   Name"name1"
  10.  } 
  11.  
  12.  replyStruct, err := conn.Do("HMSET", redis.Args{}.Add("hkey1").AddFlat(&u1)...) 
  13.  if err != nil { 
  14.   fmt.Println("struct err: ", err) 
  15.  } 
  16.  fmt.Println(replyStruct) 

閱讀上面這段代碼,我們使用 AddFlat 方法將結構體寫入 Redis,需要注意的是結構體字段是可導出的字段名稱,并且使用了字段標簽 redis。

讀操作:

  1. func structValues(conn redis.Conn) { 
  2.  v, err := redis.Values(conn.Do("HGETALL""hkey1")) 
  3.  if err != nil { 
  4.   fmt.Println("redis.Values() err: ", err) 
  5.  } 
  6.  
  7.  // redis.ScanStruct() 
  8.  u2 := new(User
  9.  if err := redis.ScanStruct(v, u2); err != nil { 
  10.   fmt.Println("redis.ScanStruct() err: ", err) 
  11.  } 
  12.  
  13.  fmt.Printf("%+v\n", u2) 

閱讀上面這段代碼,我們使用兩個助手函數 Values 和 ScanStruct,將 Redis 服務器的回復解析到 struct,redigo 還提供了助手函數 ScanSlice 將 Redis 服務器的回復解析到 slice。

限于篇幅,關于 map 和 slice 的示例代碼,請閱讀推送到 GitHub 上的本文相關代碼。

05總結

本文我們介紹了 Golang 官方推薦的操作 Redis 的三方庫 redigo,它僅需使用 Do 函數執行 Redis 所有命令,它還提供了很多助手函數幫助我們更加方便操作 Redis。

本文轉載自微信公眾號「Golang語言開發棧」,可以通過以下二維碼關注。轉載本文請聯系Golang語言開發棧公眾號。

 

責任編輯:武曉燕 來源: Golang語言開發棧
相關推薦

2021-10-26 09:26:21

編程技能開發

2019-07-05 17:00:33

Redis數據庫可視化管理

2011-08-17 10:10:59

2011-03-21 14:53:36

Nagios監控Linux

2011-04-06 14:24:20

Nagios監控Linux

2015-01-13 10:32:23

RestfulWeb框架

2023-10-11 07:00:44

高可用程序客戶端

2010-05-26 09:26:43

Cassandra

2010-06-01 13:19:04

2021-10-18 05:00:38

語言GoRequestHTTP

2021-05-07 15:28:03

Kafka客戶端Sarama

2011-10-31 13:42:46

Android客戶端人人網

2021-03-12 16:21:02

LinuxEvernote客戶端

2012-10-11 17:02:02

IBMdw

2010-05-12 15:46:51

Subversion客

2024-07-01 08:58:40

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2015-08-26 17:31:03

UbuntuBT客戶端

2015-05-25 14:33:38

Redis開源

2011-05-18 09:56:31

UbuntuLinux客戶端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线视频 欧美日韩 | 成人国产精品色哟哟 | 成人精品一区亚洲午夜久久久 | 一区二区在线看 | 国产精品综合网 | 久久精品 | 亚洲精品一区二区二区 | 亚洲色图50p | 亚洲91视频 | 中文字幕第二区 | 国产成人精品区一区二区不卡 | 你懂的在线视频播放 | 亚洲一区电影 | 99热.com | 久久99精品久久久 | 日本淫视频| 欧美一级片 | 精品视频在线免费观看 | 日韩av最新网址 | 超碰在线网站 | 国内精品伊人久久久久网站 | 欧美日一区 | 国产在线视频一区二区董小宛性色 | 成年人免费看的视频 | 亚洲视频不卡 | 91日韩在线 | 国产精品久久久久久久久久久久久 | 国产精品视频一 | 日本久草视频 | 国产精品久久久久久妇女6080 | 国产美女黄色片 | 午夜成人在线视频 | 日本精品视频一区二区 | 国产在线对白 | 午夜影院网站 | 国产人久久人人人人爽 | 视频一区在线观看 | 蜜臀久久99精品久久久久野外 | 国产精品毛片一区二区三区 | 色婷婷av一区二区三区软件 | 日韩欧美精品一区 |