go操作redis cluster集群

2020-03-26  本文已影响0人  百里江山

github.com/go-redis/redis 非常友好的SDK

package redis_cluster

import (
    "fmt"
    "log"
    "strconv"
    "testing"
    "time"

    "github.com/go-redis/redis/v7"
)

var clusterClient *redis.ClusterClient

func init() {
    log.SetFlags(log.Llongfile | log.Lshortfile)
    // 连接redis集群
    clusterClient = redis.NewClusterClient(&redis.ClusterOptions{
        Addrs: []string{ // 填写master主机
            "192.168.21.22:30001",
            "192.168.21.22:30002",
            "192.168.21.22:30003",
        },
        Password:     "123456",              // 设置密码
        DialTimeout:  50 * time.Microsecond, // 设置连接超时
        ReadTimeout:  50 * time.Microsecond, // 设置读取超时
        WriteTimeout: 50 * time.Microsecond, // 设置写入超时
    })
    // 发送一个ping命令,测试是否通
    s := clusterClient.Do("ping").String()
    fmt.Println(s)
}

func TestConnByRedisCluster(t *testing.T) {
    // 测试一个set功能
    s := clusterClient.Set("name", "barry", time.Second*60).String()
    fmt.Println(s)
}
func TestPipe(t *testing.T) {
    // 测试管道发送多条命令.
    pipe := clusterClient.Pipeline()
    for i := 0; i < 10; i++ {
        pipe.Set("go"+strconv.Itoa(i), strconv.Itoa(i), time.Second*300)
    }
    // 真正执行发送操作.
    result, err := pipe.Exec()
    if err != nil {
        t.Error(err)
    }
    t.Log(result)
}

// 验证上面是否拿到数据
func TestGetKey(t *testing.T) {
    for i := 0; i < 10; i++ {
        ret := clusterClient.Get("go" + strconv.Itoa(i)).String()
        fmt.Println(ret)
    }
}

上一篇下一篇

猜你喜欢

热点阅读