Redis

    [MySQL, Redis, Node.js] Cache를 활용한 Update query 속도 개선

    그지같은 Update 속도 때문에, 여러 곳에서 병목 현상이 났다. 프로덕트 성격상, update, Insert, delete가 활발한 table이 있는데, 이 곳에서 데드락도 잘 걸리고, 고통스러웠다. 매번 투매니커넥션 뜰 때마다, 프로세스 리스트에서 병목 현상을 일으키는 쿼리를 보고, 놀러갈 때도, 노트북을 들고다니며, 눈물의 스크립트를 날리는 고통을 받았다... 이번에 시간이 좀 나서, 어떻게든 개선해보려했다. 전체를 다 고치는건, 공수가 너무 들어서 힘들었고, 일단 임시조치를 취했다. 처음엔 서브쿼리, 임시테이블을 활용했으나, 이것도 여의치 않아서, 그냥 캐시를 활용하기로 했다. Redis를 활용해서, Pk를 캐시로 만들었다. redis.commend는 미리 모듈화해 둔 redis 명령어 함수다..

    [Node.js, Redis] Nodejs AWS Elasticache Redis

    점점 규격이 커지다 보니, 반복 요청 하는 구간이나, 계산이 많은 곳에서 부하가 조금씩 생겼다. 디비랑 서버에서 짱구를 아무리 굴려봐도 어쩔 수 없는 부분이 있었다. 그렇다. 이젠 캐시처리가 필요했다... 여러가지를 알아보다가, 엘라스틱캐시-레디스를 선택했다. EC2에 레디스를 직접 배포해서 할 수도 있었지만, 증설, 로그 등 관리에 용이했기 때문이다. elasticcache는 아마존에서 Redis로 만들면 된다. 셋팅은 생략한다. Nodejs에 연결하려 한다. 리더 엔드포인트는 읽기만 하는 용도고, 기본 엔드 포인트로 연결을 일단 해보자. 해당 사진은 ElasticCache 대시보드에 Redis에 있다. 여러 Npm이있는데, redis를 사용했다. 사람들의 인기도나, 속도, 쓰이는 함수, 업데이트 주기..

    Nodejs Redis 활용

    Nodejs Redis 활용 사용한 예시 exports.diaryMainWeightUpdate = async (req, res, next) => { try { const member = res.locals.member; const { weight, created_at } = req.body; const monthFirstDay = moment(created_at).startOf('month').format('YYYY-MM-DD'); const connection = await mySqlDbRds.getConnection(async conn => conn); const [weightUpdate] = await connection.query(query.weightUpdate, [weight, member.m..