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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Go 学习笔记(60)— Go 第三方库之 go-redis(初始化 redis、操作 string、操作 list、操作 set、操作 hset)

發布時間:2023/11/28 生活经验 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go 学习笔记(60)— Go 第三方库之 go-redis(初始化 redis、操作 string、操作 list、操作 set、操作 hset) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 第三方庫 go-redis

因為 Go 標準庫中是沒提供 redis 的庫,所以我們選擇用 go-redis 這個第三方庫。源碼地址為 https://github.com/go-redis/redis

在命令行中使用 go get 來安裝

go get github.com/go-redis/redis

2. 初始化 Redis

在進行代碼之前,需要先安裝 redis,安裝指導請參考:https://blog.csdn.net/wohu1104/article/details/86755570

通過 redis.NewClient 函數創建一個 Redis 客戶端,并通過 redis.Options 配置 Redis 相關的屬性,例如 Redis 服務器地址、數據庫名、數據庫密碼等。

package mainimport ("fmt""github.com/go-redis/redis"
)var client *redis.Clientfunc initClient() error {// 創建 redis 客戶端client = redis.NewClient(&redis.Options{Addr:     "127.0.0.1:6379",Password: "", // no password setDB:       0,  // use default DBPoolSize: 10, // 連接池的大小為 10})//defer client.Close()// 通過 cient.Ping() 來檢查是否成功連接到了 redis 服務器pong, err := client.Ping().Result()fmt.Println("Redis Client: " + pong)return err
}
func main() {initClient()
}

3. 操作 String

Redisstring 比較常用的類型,所有鍵值均是字符串對象。

func operateString() {// 第三個參數是過期時間, 如果是0, 則表示沒有過期時間.err := client.Set("name", "wohu", 0).Err()if err != nil {fmt.Printf("set name error: %v\n", err)return}err = client.Set("age", 20, 0).Err()if err != nil {fmt.Printf("set age error: %v\n", err)return}// 獲取某值userName, err := client.Get("name").Result()if err != nil {fmt.Printf("get user_name error: %v\n", err)return}fmt.Println("get name", userName)userAge, err := client.Get("age").Result()if err != nil {fmt.Printf("get age error: %v\n", err)return}fmt.Println("get age", userAge)
}

查看 redis 并獲取值,與代碼執行一致。

ubuntu@wohu:/$ redis-cli
127.0.0.1:6379> keys *
1) "name"
2) "age"
127.0.0.1:6379> get name
"wohu"
127.0.0.1:6379> get age
"20"
127.0.0.1:6379> 

4. 操作 List

func operateList() {// 從列表的尾部進行添加err := client.RPush("message", "01").Err()if err != nil {fmt.Printf("rpush message error: %v\n", err)return}// 從列表的頭部進行添加err = client.LPush("message", "02").Err()if err != nil {fmt.Printf("lpush message error: %v\n", err)return}// 從列表尾部彈出元素message, err := client.RPop("message").Result()if err != nil {fmt.Printf("rpop message error: %v\n", err)return}fmt.Println("rpop message: ", message)// 獲取長度length, err := client.LLen("message").Result()if err != nil {fmt.Printf("llen message error: %v\n", err)return}fmt.Println("message length: ", length)
}

redis 查詢結果:

127.0.0.1:6379> lrange message 0 -1
1) "02"
127.0.0.1:6379> 

5. 操作 set

這是一個沒有無序數組且不能有重復,其叫無序集合:

func operateSet() {// 向 set_test 中添加元素client.SAdd("set_test", "name")client.SAdd("set_test", "age")client.SAdd("set_test", "gender")// 判斷 name 是否在集合中isMember, err := client.SIsMember("set_test", "name").Result()if err != nil {fmt.Printf("sismember set_test error: %v\n", err)return}fmt.Println("sismember set_test:", isMember)// 獲取集合 set_test 中所有的元素all, err := client.SMembers("set_test").Result()if err != nil {fmt.Printf("smembers set_test error: %v\n", err)return}fmt.Println("smembers set_test: ", all)
}
127.0.0.1:6379> smembers set_test
1) "name"
2) "age"
3) "gender"
127.0.0.1:6379> 

6. 操作 hset

func operateHash() {// 向 hash 類型添加元素client.HSet("student", "name", "jack")client.HSet("student", "age", 18)// 批量地向名稱為 student 的 hash 中添加元素client.HMSet("user", map[string]interface{}{"id": 1, "time": "2020-03-31"})// 批量獲取名為 student 的 hash 中的指定字段的值.fields, err := client.HMGet("student", "name", "age").Result()if err != nil {fmt.Printf("hmget user error: %v\n", err)return}fmt.Println("hmget user: ", fields)// 獲取名為 student 的 hash 中的字段個數length, err := client.HLen("student").Result()if err != nil {fmt.Printf("hlen student error: %v\n", err)return}fmt.Println("hlen user: ", length)
}

參考:
https://github.com/go-redis/redis
https://gitbook.cn/books/5e7637996ba17a6d2c9a3352/index.html
https://github.com/fwhezfwhez/gitchat/tree/master/chat1-web%E5%90%8E%E7%AB%AF%E5%AE%9E%E6%88%98

總結

以上是生活随笔為你收集整理的Go 学习笔记(60)— Go 第三方库之 go-redis(初始化 redis、操作 string、操作 list、操作 set、操作 hset)的全部內容,希望文章能夠幫你解決所遇到的問題。

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