Я использую golang в лямбда-функции для подключения к Redis. Когда я впервые вызываю лямбду, создается новый пул соединений, и при дальнейших вызовах лямбда, кажется, использует пул для получения соединений. Однако, когда я добавил строку con.close (), второй вызов лямбды завершается сбоем, а третий вызов воссоздает пул. Есть ли риск, если я не закрою соединение? Или я могу закрыть соединение каким-либо другим способом?
Ошибка, которую я получаю в журналах наблюдения за облаком, - это «ошибка времени выполнения, неверный адрес памяти или нулевой указатель» в строке пула. Метод Get () выглядит так, как будто переменная пула ноль?
func newPool(addr string) *redis.Pool {
return &redis.Pool{
MaxIdle: 3,
IdleTimeout: 240 * time.Second,
// Dial or DialContext must be set. When both are set, DialContext takes precedence over Dial.
Dial: func () (redis.Conn, error) { return redis.Dial("tcp", addr) },
}
}
var pool *redis.Pool
func init(){
pool = newPool()
}
func Handle(ctx context.context, req events.APIGatewayWebsocketProxyRequest)(interface{},error){
//make new redis connection
con:= pool.get()
con.close()
}