/
redis_cluster.go
98 lines (84 loc) · 2.63 KB
/
redis_cluster.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package main
import (
//"errors"
"fmt"
//"sync"
"time"
//"log"
//redissingle "github.com/go-redis/redis"
"github.com/gomodule/redigo/redis"
//rediscluster "github.com/chasex/redis-go-cluster"
rejson "github.com/secondspass/go-rejson"
//"encoding/json"
redisc "github.com/mna/redisc"
)
//var redisdb *redissingle.Client
//var cluster *rediscluster.Cluster
//func Newclusterclient() *redissingle.ClusterClient{
// redisdb := redissingle.NewClusterClient(&redissingle.ClusterOptions{
// Addrs: []string{"172.19.0.2:6379", "172.19.0.3:6379", "172.19.0.4:6379", "172.19.0.5:6379", "172.19.0.6:6379", "172.19.0.7:6379"},
// })
// redisdb.Ping()
// return redisdb
//}
//
//func Newclustercli() *rediscluster.Cluster{
// cluster, _ := rediscluster.NewCluster(
// &rediscluster.Options{
// StartNodes: []string{"172.19.0.2:6379", "172.19.0.3:6379", "172.19.0.4:6379", "172.19.0.5:6379", "172.19.0.6:6379", "172.19.0.7:6379"},
// ConnTimeout: 50 * time.Millisecond,
// ReadTimeout: 50 * time.Millisecond,
// WriteTimeout: 50 * time.Millisecond,
// KeepAlive: 16,
// AliveTime: 60 * time.Second,
// })
//
// return cluster
//}
func createPool(addr string, opts ...redis.DialOption) (*redis.Pool, error) {
return &redis.Pool{
MaxIdle: 5,
MaxActive: 10,
IdleTimeout: time.Minute,
Dial: func() (redis.Conn, error) {
return redis.Dial("tcp", addr, opts...)
},
TestOnBorrow: func(c redis.Conn, t time.Time) error {
_, err := c.Do("PING")
return err
},
}, nil
}
func Newclusterredisc() redisc.Cluster{
cluster := redisc.Cluster{
StartupNodes: []string{"192.168.0.213:7000", "192.168.0.213:7001", "192.168.0.213:7002", "192.168.0.213:7003", "192.168.0.213:7004", "192.168.0.213:7005"},
DialOptions: []redis.DialOption{redis.DialConnectTimeout(5 * time.Second)},
CreatePool: createPool,
}
return cluster
}
type jsonvalue struct {
Page int `json:"page"`
Fruits []string `json:"fruits"`
}
func main() {
//data := &jsonvalue{Page: 1, Fruits: []string{"apple", "peach"}}
redisdb := Newclusterredisc()
defer redisdb.Close()
if err := redisdb.Refresh(); err != nil {
panic(err)
}
fmt.Println("hello")
conn := redisdb.Get()
defer conn.Close()
//_, err := rejson.JSONSet(conn, "key1", ".", data, false, false)
//if err != nil {
// panic(err)
//}
val, err := redis.Bytes(rejson.JSONGet(conn, "key1", ""))
if err != nil{
panic(err)
}
//fmt.Println("key", string(json.Marshal(val)))
fmt.Println("key", string(val))
}