factory.go 971 字节
Newer Older
Y
Your Name 已提交
1
package redismanager
E
eoLinker API Management 已提交
2 3 4

import (
	"fmt"
黄孟柱 已提交
5
	"github.com/go-redis/redis"
E
eoLinker API Management 已提交
6 7 8 9 10 11 12 13

	"sort"
)

const (
	_PoolSize = 2000
)

Y
Your Name 已提交
14
//Create 创建
E
eoLinker API Management 已提交
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
func Create(config RedisConfig) Redis {

	switch config.GetMode() {
	case RedisModeCluster:
		{
			option := &redis.ClusterOptions{
				Addrs:          config.GetAddrs(),
				Password:       config.GetPassword(),
				PoolSize:       2000,
				ReadOnly:       true,
				RouteByLatency: true,
			}

			return &redisProxy{
				Cmdable: redis.NewClusterClient(option),
Y
Your Name 已提交
30
				config:  config,
E
eoLinker API Management 已提交
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
			}
		}

	case RedisModeStand:
		{

			addrs := config.GetAddrs()

			option := redis.RingOptions{
				Addrs:    make(map[string]string),
				Password: config.GetPassword(),
				DB:       config.GetDbIndex(),

				PoolSize: _PoolSize,
			}
			sort.Strings(addrs)
			for i, addr := range addrs {
				option.Addrs[fmt.Sprintf("shad:%d", i)] = addr
			}

			return &redisProxy{
				Cmdable: redis.NewRing(&option),
Y
Your Name 已提交
53
				config:  config,
E
eoLinker API Management 已提交
54 55 56 57 58 59
			}
		}
	}

	return nil
}