Redis
-
-
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값..
-
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 ..
-
NestJS와 ioredis를 이용한 초대링크 만료 시간 설정하기Redis 2024. 8. 23. 17:07
개요특정 그룹의 초대 링크를 이메일로 전송 했을경우 링크가 만료되지 않는다면 1년이든 5년이든 뒤에도 해당 초대 링크를 이용하여 가입할 수 있을것이다. 그래서 그룹 초대링크 같은 초대 링크가 만료될 수 있는 기능이 필요하다.해당 초대링크 만료기간 기능을 추가하기 위해 Redis의 TTL을 이용해보자 Redis의 Cache Expire에 대해 짧게 알아보자캐시를 사용 하더라도 관리, 비용 측면에서 데이터를 무기한 저장하지 않습니다.키에 타임아웃을 설정합니다. 타임아웃이 만료되면 키가 자동으로 삭제됩니다. 관련 시간 초과가 있는 키를 Redis 용어로는 휘발성이라고 합니다.Redis의 경우 이런 만료 시간을 처리하기 위해 Key별 TTL(Time-To-Live)을 설정할 수 있습니다. 만료 기간이 있는 초대..
-
Redis사용을 위한 AWS ElastiCache 사용과 개발환경에서 docker 사용Redis 2024. 8. 16. 17:26
docker-compose-dev.ymlbackend: build: dockerfile: Dockerfile.dev context: ./backend container_name: social_backend volumes: - /app/node_modules - ./backend:/app env_file: - ./.env environment: POSTGRESQL_ROOT_PASSWORD: ${POSTGRESQL_ROOT_PASSWORD} POSTGRESQL_DATABASE: ${POSTGRESQL_DATABASE} POSTGRESQL_HOST: ${POSTGRESQL_HOST} POSTGRESQL_..