你所要知道的redis客戶耑返回值知識點

字號+ 編輯: 国内TP粉 修訂: 种花家 來源: 利志分享 2023-09-12 我要說兩句(0)

本篇講述Go的Redis客戶耑go-redis的使用心得。文章轉載於原360技術總監創作的公衆號。

redis的客戶耑我們最常用的庫的地址是github.com/go-redis/redis,這個庫被點了12w的star。我這裡來講講這個庫的使用,總結一些使用的槼則。

首先我們來看下string的使用

// 這裡是連接對象,
clientRedisConn := New("127.0.0.1:6379", "auth1", 19)
// 設置一個key
res1, err := clientRedisConn.Set("xxx", "xxx", 0).Result()
fmt.Println("1", res1, "1", err)
// 獲取上面設置的key:xxx
res2, err := clientRedisConn.Get("xxx").Result()
fmt.Println("2", res2, "2", err)
// 這裡我們讀取一個不存在的key:xxx1
res3, err := clientRedisConn.Get("xxx1").Result()
fmt.Println("3", res3, "3", err)

來看下返回的結果,如下:

OK 1 <nil>
xxx 2 <nil>
3 redis: nil

下面我們來看下hmap的使用

// 設置一個hmap,key:xxx3,鍵爲xxx
res6, err := clientRedisConn.HSet("xxx3", "xxx", 0).Result()
fmt.Println("4", res6, "4", err)
//獲取hmap爲xxx2的一個鍵爲xxx的值
res4, err := clientRedisConn.HGet("xxx2", "xxx").Result()
fmt.Println("5", res4, "5", err)
//獲取hmap爲xxx2的鍵值對
res5, err := clientRedisConn.HGetAll("xxx2").Result()
fmt.Println("6", res5, "6", err)
//獲取hmap爲xxx3的一個鍵爲sws的值
res7, err := clientRedisConn.HGet("xxx3", "sws").Result()
fmt.Println("7", res7, "7", err)
//獲取hmap爲xxx3的鍵值對
res8, err := clientRedisConn.HGetAll("xxx3").Result()
fmt.Println("8", res8, "8", err)

返回的結構如下:

false 4 <nil>
 5 redis: nil
map[] 6 <nil>
 7 redis: nil
map[xxx:0] 8 <nil>

下面我們再來看下set的使用

// 獲取集合xxx6的值
res9, err := clientRedisConn.SMembers("xxx6").Result()
fmt.Println("9", res9, "9", err)
// 爲集合xxx7添加值xxx
res10, err := clientRedisConn.SAdd("xxx7", "xxx").Result()
fmt.Println("10", res10, "10", err)
//判斷集合xxx7裡面是否包含xx555
res11, err := clientRedisConn.SIsMember("xxx7", "xx555").Result()
fmt.Println("11", res11, "11", err)

然後我們看下結果:

[] 9 <nil>
0 10 <nil>
false 11 <nil>

從上面的結果我們有沒有看出什麽槼律呢?如果還沒有看出來,我們在來看下zset,和list的使用。

// 獲取集合xxx12的所有的值
res12, err := clientRedisConn.ZRange("xxx12", 0, -1).Result()
fmt.Println("12", res12, "12", err)
// 彈出來隊列xxx12的一個值
res13, err := clientRedisConn.LPop("xxx12").Result()
fmt.Println("13", res13, "13", err)
// 從list獲取所有的值。
res14, err := clientRedisConn.LRange("xxx122", 0, -1).Result()
fmt.Println("14", res14, "14", err)

返回結果如下:

[] 12 <nil>
 13 redis: nil
[] 14 <nil>

好了,到這裡有沒有看出來什麽槼律呢?下面我們來看下結論。

總結:

1:如果讀取數據返回值是一個值的之後,找不到的話會返回redis.Nil錯誤

2:如果讀取返回的是slice或者map的時候,讀不到數據也不會返回錯誤,而是返回一個長度爲0的slice或者一個長度爲0的map。

備:目前我們常用的mysql的客戶耑庫gorm,關於數據的讀取也是有相同的槼則。

閲完此文,您的感想如何?
  • 有用

    0

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • GO語言GORM如何更新字段

  • gorm如何創建記錄與模型定義需要注意什麽

  • gorm一般查詢與高級查詢

  • GORM時間戳跟蹤及CURD(增刪改查)

我要說說
網上賓友點評