전체 글
-
Redis를 활용한 외부 Api 요청 개선하기Redis 2024. 9. 24. 21:46
현재 프로젝트에서는 Tour-Api 서비스를 이용하고 있는데 외부 api를 호출 할때 Redis를 이용하여 어떻게 하면 더 최소로 호출 하게 만들 수 있을지에 대해서 생각 해봐야한다.1. 외부 api를 request 마다 계속 호출하게 되면 비용 과금 문제가 발생한다.2. 똑같은 결과값을 가진다고 가정 했을 때 현재 서버에서 외부 Api 서버를 호출 할때 걸리는 시간이 발생 한다. 도의 정보를 가져오는 api 해당 api의 결과를 보게되면 알 수 있듯이 왠만하면 절대 바뀌지 않을 정보들이다."list": [ { "rnum": 1, "code": "1", "name": "서울" }, ..
-
NestJS에서 Redis를 활용한 좋아요 성능 개선Redis 2024. 9. 23. 16:32
현재 구조의 문제memberId와 feedId가 식별자 관계로 중복 데이터가 존재하지 않게 무결성을 보장 하지만 잦은 insert와 update는 성능 저하를 일으킨다.피드 좋아요 개선댓글 좋아요 개선1. Redis의 `Set` 자료구조를 이용하여 개선하기set 자료구조를 사용한 이유는 RDBMS에서도 무결성을 보장하기 위해 유니크 제약조건을 지키기 위해 식별자 관계로 PK를 사용 했는데 Redis의 set 자료구조를 사용하면 중복된 데이터가 없기 때문에 무결성을 보장할 수 있다레디스의 `set` 을 이용하여 이 기능을 간단하게 구현할 수 있으며, 빠른 시간 안에 처리할 수 있다. 1. 피드의 아이디를 사용해서 key를 생성2. 해당 피드에 좋아요를 누른 사용자의 ID를 아이템으로 추가하면 동일한 ID값..
-
react-query useQuery 커스텀훅으로 재사용하기React.js/React-Query 2024. 9. 20. 15:37
useQuery는 useMuation처럼 팩토리 메서드 패턴으로 커스텀훅으로 만들 필요는 없어 보였다. 그래도 중복되는 쿼리키를 가지는 useQuery는 관심사를 분리하여 재사용 할 수 있게 커스텀훅으로 만드는게 좋아 보였다. feed-id를 통해서 특정 feed를 가져오는 useQuery 커스텀훅으로 만들기feed를 수정하기 위해 피드를 가져오는 부분 Notification에서 feedId를 통해 특정 피드를 가져오는 부분 useFeedByIdQuery.ts 커스텀 훅으로 만들었을때 장점feedDetail에서는 refetch가 필요하고 CreateFeed에서 remove가 필요할때 커스텀훅을 만들어 사용하면 원하는 옵션을 호출하여 사용할 수 있다.options를 호출하는 부분에서 사용하여 enable..
-
react-query useMutation 커스텀훅으로 재사용하기React.js/React-Query 2024. 9. 15. 13:39
코드를 볼때부터 DRY를 지키지 않은 코드라는것을 바로 알 수 있다.심지어 해당 코드 중복 방식은 무려 56개의 컴포넌트에서 사용되고 있다.... 커스텀훅으로 코드 리팩토링 하기목표Loading, Report Noti 관려 라이브러리들을 커스텀훅에서 import 하고 사용하기mutationFn과 mutationKey를 커스텀훅이 호출 하는곳에서 넘겨주기 OnMutate와onError는 거의 동일하게 사용되기 때문에 고정이고처리 완료되어 성공 했을때 Report.success 부분에 옵션들과 callback 함수를 통해서 성공 후의 작업들을 처리하게끔 작성 하였다.만약에 성공후의 data를 가공하거나 해야될 경우에는 코드를 수정 해야 될것 같다. 목표대로 Noti 관련 라이브러리들을 캡슐화 되었고 mu..
-
dotenv 호출시 같은 환경변수명의 값을 변경시에 발생하는 문제Node.js 2024. 9. 12. 15:58
dotenv 사용시에 똑같은 환경변수에 값만 바뀌었을때 제대로 바뀌지 않는 문제가 있다.S3 업로드 키의 환경변수값을 변경 했을때 애플리케이션 상에서 log를 출력하면 정상적으로 바뀐것으로 나오나 실제로는 제대로 변경 되지 않아서 AWS Access Key Id you provided does not exist in our records 에러가 발생한다.해당 문제가 발생하는 원인을 나는 캐싱 문제라고 생각 했다. 아마도 이전 AWS key값이 캐싱되어 환경변수의 값이 변경되었음에도 이전 캐싱된값을 계속 가져오는것이라고 생각했다. 해결을 위한 조치 node_modules 삭제와 dist 파일 삭제docker 이미지 전체 삭제 및 다시 빌드$ docker-compose -f docker-compose-dev..
-
InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our recordAWS/S3 2024. 9. 11. 17:44
Access Key도 정상적이고 역할도 정확하게 주었는데 도대체 왜 안되는걸까 https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/s3serviceexception-error.html S3ServiceException 오류 - Amazon RedshiftS3ServiceException 오류 가장 일반적인 s3ServiceException 오류의 원인은 형식이 잘못 지정되었거나, 잘못된 자격 증명 문자열이 있거나, 서로 다른 AWS 리전에 있는 클러스터와 버킷이 있거나, Amazon S3 권docs.aws.amazon.com잘못된 액세스 키 ID 액세스 키 ID가 존재하지 않는 경우, 다음과 같은 오류 메시지가 표시됩니다. 공식 문서를 보니까 그렇다고 한다. ..
-
Redis의 zrange 옵션들Redis 2024. 9. 10. 20:21
REV결과를 역순으로 반환합니다.기본적으로 zrange는 오름차순으로 결과를 반환하지만, REV 옵션을 사용하면 내림차순으로 반환합니다.BYLEX사전식 순서(lexicographical order)로 정렬된 요소들을 반환합니다.문자열 비교를 기반으로 정렬하며, 숫자 스코어가 아닌 문자열 값 자체를 기준으로 합니다.WITHSCORES각 요소와 함께 해당 요소의 스코어도 함께 반환합니다.결과에 각 멤버의 스코어 정보가 포함됩니다.LIMIT결과의 개수를 제한합니다.주로 OFFSET과 COUNT 두 개의 인자와 함께 사용됩니다.예: LIMIT 0 10은 처음 10개의 결과만 반환합니다.BYSCORE요소들을 스코어 기준으로 정렬하여 반환합니다.이 옵션을 사용하면 스코어 범위를 지정하여 결과를 필터링할 수 있습니다
-
NestJS에서 Redis를 활용한 최근 검색어 기능 구현Redis 2024. 9. 10. 18:23
최근 검색어 기능최근 검색어는 10개를 저장할 수 있고 최근 10개의 검색어를 가져온다검색어가 10개를 초과하면 가장 오래된 검색어를 삭제하고 저장한다.Redis의 Sorted Set 자료구조 사용일반적인 Set 자료구조는 요소들의 순서가 보장되지 않고 중복을 허용하지 않는다는 특성을 가지는데 반해 Sorted Set 자료구조는 중복을 허용하지는 않고 개별 요소들이 특정한 기준에 따라 정렬되어있는 자료 구조이다.최신 검색어 저장 기능에 Sorted Set을 사용중복을 허용하지 않기 때문에 중복된 검색어는 저장 하지 않는다.특정한 조건 (검색된 시간)에 따라 정렬되어서 저장할 수 있기 때문에 제일 오래된 검색어부터 삭제 할 수 있다. zdd는 sort set 자료구조에 저장하는 메서드zcard는 sort ..