package rds import ( "github.com/go-redis/redis" "time" ) const ( TIMEOUT_READ = 3 * time.Second TIMEOUT_WRITE = 5 * time.Second TIMEOUT_POOL = 60 * time.Second SIZE_POOL = 10 ) type H map[string]string func Connect(addr, password string, db int) (*redis.Client, error) { conn := redis.NewClient(&redis.Options{ Addr: addr, Password: password, DB: db, DialTimeout: TIMEOUT_READ, ReadTimeout: TIMEOUT_READ, WriteTimeout: TIMEOUT_WRITE, PoolSize: SIZE_POOL, PoolTimeout: TIMEOUT_POOL, }) _, err := conn.Ping().Result() if nil != err { return nil, err } return conn, nil } func ConnectCluster(addrs []string, password string, db int) (*redis.ClusterClient, error) { conn := redis.NewClusterClient(&redis.ClusterOptions{ Addrs: addrs, Password: password, DialTimeout: TIMEOUT_READ, ReadTimeout: TIMEOUT_READ, WriteTimeout: TIMEOUT_WRITE, PoolSize: SIZE_POOL, PoolTimeout: TIMEOUT_POOL, }) _, err := conn.Ping().Result() if nil != err { return nil, err } return conn, nil } func ConnectSentinel(addrs []string, master, password string, db int) (*redis.Client, error) { conn := redis.NewFailoverClient(&redis.FailoverOptions{ MasterName: master, SentinelAddrs: addrs, Password: password, DB: db, DialTimeout: TIMEOUT_READ, ReadTimeout: TIMEOUT_READ, WriteTimeout: TIMEOUT_WRITE, PoolSize: SIZE_POOL, PoolTimeout: TIMEOUT_POOL, }) if _, err := conn.Ping().Result(); err != nil { return nil, err } return conn, nil }