コード例 #1
0
ファイル: redis.go プロジェクト: ishan-anand/norse
// Specify a factory function to create a connection,
// context and a timeout for connection to be created
func configureRedis() {
	// For each type in redis create corresponding pool
	redisCtx = context.Background()
	redisPoolMap = make(map[string]*pool.ResourcePool)
	milliSecTimeout = 5000
	redisConfigs, err := config.LoadRedisConfig()
	if err != nil {
		os.Exit(1)
	}
	for key, config := range redisConfigs {
		factoryFunc := func(key string, config map[string]string) pool.Factory {
			return func() (pool.Resource, error) {
				return redisFactory(key, config)
			}
		}
		t := time.Duration(time.Duration(milliSecTimeout) * time.Millisecond)
		redisPoolMap[key] = pool.NewResourcePool(factoryFunc(key, config), 10, 100, t)
	}
}
コード例 #2
0
ファイル: redis.go プロジェクト: pranjal5215/norse
// Specify a factory function to create a connection,
// context and a timeout for connection to be created
func configureRedis() {
	// For each type in redis create corresponding pool
	redisCtx = context.Background()
	redisPoolMap = make(map[string]*redis.Pool)
	milliSecTimeout = 1000
	redisConfigs, err := config.LoadRedisConfig()
	if err != nil {
		os.Exit(1)
	}
	for key, config := range redisConfigs {
		/*	factoryFunc := func(key string, config map[string]string) pool.Factory {
				return func() (pool.Resource, error) {
					return redisFactory(key, config)
				}
			}
			t := time.Duration(time.Duration(milliSecTimeout) * time.Millisecond)
			redisPoolMap[key] = pool.NewResourcePool(factoryFunc(key, config), 10, 50, t)
		*/
		factoryFunc := func(key string, config map[string]string) func() (redis.Conn, error) {
			return func() (redis.Conn, error) {
				return redisFactory(key, config)
			}
		}

		redisPoolMap[key] = &redis.Pool{
			MaxIdle:   20,
			MaxActive: 40, // max number of connections
			Dial:      factoryFunc(key, config),
			TestOnBorrow: func(c redis.Conn, t time.Time) error {
				_, err := c.Do("PING")
				return err
			},
		}

	}
}