利用 Go 語言加速 Redis 操作:掌握 go-redis 包的高效應用技巧

一、golang 操作 redis

1、安裝

c:\aaa>  mkdir testredis
c:\aaa\testredis>  go mod init testredis
go get github.com/go-redis/redis/v8

2、基本使用

package main
import (
  "context"
  "fmt"
  "github.com/go-redis/redis/v8"
  "time"
)
var ctx = context.Background()
func main() {
//連接redis數據庫
  rdb := redis.NewClient(&redis.Options{
    Addr:     "localhost:6379",
    Password: "", // no password set
    DB:       0,  // use default DB
  })
  _, err := rdb.Ping(ctx).Result()
  if err != nil {
    fmt.Println("redis數據庫連接失敗")
  } else {
    fmt.Println("redis數據庫連接成功...")
  }
  //1、操作字符串
  err1 := rdb.Set(ctx, "username", "snail", 0).Err()
  if err1 != nil {
    fmt.Println("設置數據失敗")
  }
  username, _ := rdb.Get(ctx, "username").Result()
  fmt.Println(username)
  //2、操作列表(list)
  rdb.LPush(ctx, "hobby", "喫飯")
  rdb.LPush(ctx, "hobby", "睡覺")
  rdb.RPush(ctx, "hobby", "寫代碼")
  hobby, _ := rdb.LRange(ctx, "hobby", 0, -1).Result()
  fmt.Println(hobby)
  //3、操作集合(set)
  rdb.SAdd(ctx, "hobby", "喫飯", "睡覺", "喫飯")
  rdb.SAdd(ctx, "hobby", "寫代碼")
  hobby, _ := rdb.SMembers(ctx, "hobby").Result()
  fmt.Println(hobby)
  //4、Redis 哈希
  err3 := rdb.HMSet(ctx, "userinfo", map[string]interface{}{
    "username": "Snail",
    "age":      "20",
  }).Err()
  if err3 != nil {
    fmt.Println(err3)
  }
  userinfo, _ := rdb.HGetAll(ctx, "userinfo").Result()
  fmt.Println(userinfo)
  fmt.Println(userinfo["username"])
  //5、設置過期時間
  rdb.Set(ctx, "age", 20, time.Second*10)
  rdb.LPush(ctx, "hobby", "喫飯")
  rdb.Expire(ctx, "hobby", time.Second*10)
  //6、刪除數據
  rdb.Set(ctx, "age", 20, 0)
  rdb.Del(ctx, "age")
  rdb.LPush(ctx, "hobby", "喫飯")
  rdb.FlushAll(ctx)
}
}

3、Pipeline

二、連接集羣

1、連接 Redis 哨兵模式

func initClient()(err error){
  rdb := redis.NewFailoverClient(&redis.FailoverOptions{
    MasterName:    "master",
    SentinelAddrs: []string{"x.x.x.x:26379", "xx.xx.xx.xx:26379", "xxx.xxx.xxx.xxx:26379"},
  })
  _, err = rdb.Ping().Result()
  if err != nil {
    return err
  }
  return nil
}

2、連接 Redis 集羣

func initClient()(err error){
  rdb := redis.NewClusterClient(&redis.ClusterOptions{
    Addrs: []string{":7000", ":7001", ":7002", ":7003", ":7004", ":7005"},
  })
  _, err = rdb.Ping().Result()
  if err != nil {
    return err
  }
  return nil
}
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/ZhLzTMn3rD430p_k9kLlkw