我正在嘗試將 2 億個密鑰加載到 redis 中,通常在大約 3100 萬個密鑰時開始出現錯誤并且不得不停止。我正在使用 golang 和 redis 庫“github.com/garyburd/redigo/redis”我設置了一個連接池:func newPool(server string) *redis.Pool { return &redis.Pool{ MaxIdle: 3, MaxActive: 10, IdleTimeout: 240 * time.Second, Dial: func () (redis.Conn, error) { c, err := redis.Dial("tcp", server) if err != nil { return nil, err } return c, err }, TestOnBorrow: func(c redis.Conn, t time.Time) error { _, err := c.Do("PING") return err }, }}然后我嘗試使用這個函數用值填充 redis:func RedisServerBatchLoadKeys(rtbExchange string, keys []string){ redisLock.Lock() defer redisLock.Unlock() retry := 0 for { conn := GetConnOrPanic(rtbExchange) defer conn.Close() conn.Send("MULTI") for _, key := range keys { conn.Send("SET", key, maxCount) conn.Send("EXPIRE", key, numSecondsExpire) } _, err := conn.Do("EXEC") if err == nil { break } else if !(err == io.EOF) { CheckRedisError(err, rtbExchange, "Could not load batch") } else { retry ++ } if retry >= 10 { CheckRedisError(err, rtbExchange, "Could not load batch - 10 retries") } }}我收到了很多錯誤,例如:讀取 tcp 10.249.15.194:6379:由對等方重置連接撥打 tcp 10.249.15.194:6379:連接被拒絕redis#RedisError : EOF我是在做一些根本錯誤的事情還是我必須添加更多錯誤檢查(除了我添加的 EOF)。謝謝,
- 1 回答
- 0 關注
- 176 瀏覽
添加回答
舉報
0/150
提交
取消