LoginSignup
3
3

More than 5 years have passed since last update.

redigoがredis-cluster対応してない問題

Last updated at Posted at 2016-08-22

概要

問題点

  • redis-go-clusterでもやってるように、複数Nodeの選択が出来ない
  • Node選択が出来ないので、
    MOVED 1525 127.0.0.1:6379(値が別のNodeに格納されてるよ!というエラー)が返ってくる

調査

Node IPとPort
Node1 127.0.0.1:6379
Node2 127.0.0.1:6380
Node3 127.0.0.1:6381

通常メソッドでのSET GET

package main

import (
    "fmt"
    "os"

    // https://github.com/garyburd/redigo/pull/170 分をbranch切ってる状態
    "github.com/garyburd/redigo/redis"
)

func main() {
    c, err := redis.Dial("tcp", "127.0.0.1:6380") // わかりやすいようにこのポートで

    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    // Connection Close
    defer c.Close()

    // SET
    t, err := c.Do("SET", "hoge", "fuga")
    if err != nil {
        fmt.Println("SET_ERR", err)
    }
    fmt.Printf("SET: %#v\n", t)

    // GET
    s, err := redis.String(c.Do("GET", "hoge"))
    if err != nil {
        fmt.Println("GET_ERR", err)
    }
    fmt.Printf("GET: %#v\n", s)
}

// SET_ERR MOVED 1525 127.0.0.1:6379
// SET: "MOVED 1525 127.0.0.1:6379"
// GET_ERR MOVED 1525 127.0.0.1:6379
// GET: ""

Cluster用メソッドを用いたのSET GET

package main

import (
    "fmt"
    "os"

    // https://github.com/garyburd/redigo/pull/170 分をbranch切ってる状態
    "github.com/garyburd/redigo/redis"
)

func main() {
    c, err := redis.NewCluster("tcp", []string{"127.0.0.1:6379", "127.0.0.1:6380", "127.0.0.1:6381"})

    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    // Connection Close
    defer c.Close()

    // SET
    t, err := c.Do("SET", "hoge", "fuga")
    if err != nil {
        fmt.Println("SET_ERR", err)
    }
    fmt.Printf("SET: %#v\n", t)

    // GET
    s, err := redis.String(c.Do("GET", "hoge"))
    if err != nil {
        fmt.Println("GET_ERR", err)
    }
    fmt.Printf("GET: %#v\n", s)
}

// SET: "OK"
// GET: "fuga"

最後に

3
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3