나는 람다 함수를 사용하여 노드의 12.
를 추가해야 새로운 연결을 Redis 데이터베이스에서 호스팅 AWS ElastiCache.
모두는 하나의 개인 VPC 보안 그룹/서브넷이 제대로 구성됩니다.
솔루션:
globals.js:
const redis = require('redis');
const redisClient = redis.createClient(
`redis://${process.env.REDIS_HOST}:${process.env.REDIS_PORT}/${process.env.REDIS_DB}`,
);
redisClient.on('error', (err) => {
console.log('REDIS CLIENT ERROR:' + err);
});
module.exports.globals = {
REDIS: require('../helpers/redis')(redisClient),
};
index.js (외부 처리기):
const { globals } = require('./config/globals');
global.app = globals;
const lambda_handler = (event, context, callback) => { ... }
exports.handler = lambda_handler;
helpers/redis/index.js:
const get = require('./get');
module.exports = (redisClient) => {
return {
get: get(redisClient)
};
};
helpers/redis/get.js:
module.exports = (redisClient) => {
return (key, cb) => {
redisClient.get(key, (err, reply) => {
if (err) {
cb(err);
} else {
cb(null, reply);
}
});
};
};
기능 전화:
app.REDIS.get(redisKey, (err, reply) => {
console.log(`REDIS GET: ${err} ${reply}`);
});
문제: 을 때 증가하는 람다는 제한 시간을 보다 큰 값 Redis 시간 제한,제가 이 오류가 발생할 수 있습니다.
REDIS 클라이언트 ERROR::Redis 연결을 실패 연결 ETIMEDOUT...
또한:
나 무료 회원 닫을 연결 한 후에는 각 거래:
module.exports = (redisClient) => {
return (cb) => {
redisClient.quit((err, reply) => {
if (err) {
cb(err);
} else {
cb(null, reply);
}
});
};
};
app.REDIS.get(redisKey, (err, reply) => {
console.log(`REDIS GET: ${err} ${reply}`);
if (err) {
cb(err);
} else {
if (reply) {
app.REDIS.quit(() => {
cb()
});
}
}
})
오류:
REDIS 얻을:AbortError:얻을 처리할 수 없습니다. 연결이 이미 닫혔습니다.
의 추가 사항:
- 을 콜백을 사용하는 이유입 통과 그들 위의 예에서
- 내가 사용하는
"redis": "^3.0.2"
- 그것은 구성 문제로 캐시 액세스백의 시간에서 작은 기간 동안의 시간이지만 그것이 다음을 제공하기 시작 시간 제한 오류가 있습니다.
- 모든 정상적으로 작동하는 로컬로