✅ 문제 상황 서비스를 운영하다보면 하루 동안 서비스에 방문한 사용자 수(DAU, Daily Active Users)를 파악해야 할 때가 많다. 그런데 하루 방문자 수를 카운팅하고 조회할 때마다 RDB(ex. MySQL)로 처리하면 트래픽이 많아질수록
✅ 세션(Session) 서비스에서 로그인 기능을 구현할 때 크게 2가지 방식으로 구현한다. JWT 방식과 세션(Session) 방식이 있다. 그 중에서 세션 방식은 다음과 같은 흐름으로 동작한다. 사용자가 ID / 비밀번호로 로그인 요청 서버는 인증
✅ 구현 방법 하루동안 서비스에 방문한 사용자 수를 카운팅하려면, 하루에 어떤 사용자가 방문했는 지 데이터로 저장해두어야 한다. 이 때, 한 명의 사용자가 여러 번 방문하더라도 한 번으로 카운팅해야 하기 때문에 중복없이 저장해야 한다. 또한 순서와는
✅ Bitmap 자료 구조 Redis에서 Bitmap은 아주 적은 메모리로 대량의 boolean 상태를 저장할 때 사용하는 자료구조이다. Bitmap의 가장 큰 장점은 공간 효율성이다. 일반적으로 boolean 값을 하나 저장하려면 8 bit 이상이
✅ 상황 실무에서 ‘내 위치를 기준으로 반경 1km에 위치한 카페 찾는 기능’을 구현해야 한다고 가정하자. 만약 이 기능을 RDB인 MySQL로 구현해야 한다면 SQL문이 굉장히 복잡해지고 거리 계산을 일일이 다 해야되기 때문에 성능도 좋지 않다. 그
✅ Set 이전 강의에서 Redis의 Sorted Set 자료 구조를 먼저 배웠었다. Sorted Set은 score(점수)를 기준으로 자동 정렬되는 중복없는 자료 구조라고 설명했다. Set은 정렬되지 않는 중복 없는 자료구조를 뜻한다. 이런 특성 때
✅ Hash Redis에서 Hash는 하나의 key 안에 여러 개의 field-value 쌍을 저장할 수 있는 자료구조이다. Hash는 json 객체의 구성과 유사해서, 여러 속성들을 묶어서 저장할 때 적합하다. ✅ Hash에 데이터 저장 # Hash
✅ String 자료 구조의 SETNX # key, value 구조로 데이터 저장하기 $ SET hobby soccer # key로 value 조회하기 $ GET hobby # 기존에 hobby라는 key가 존재하더라도, 해당 key에 value를
✅ 인기 검색어 기능 구현 실제 서비스를 구현하다보면 특정 기준으로 순위별 데이터를 보여줘야 하는 경우가 많다. 예를 들어, 인기 게시글이라던지, 인기 검색어라던지, 인기순으로 영화 데이터를 보여줘야 된다던지, 상품을 판매순으로 보여줘야 되는 것들이
✅ Sorted Set (ZSet) Redis에서 Sorted Set(ZSet)은 score(점수)를 기준으로 자동 정렬되는 중복 없는 자료구조이다. 이런 특성 때문에 실제 서비스에서 랭킹 시스템, 실시간 인기 데이터 관리처럼 순서와 가중치가 중요한