스터디-ing/Cloud
[Redis] Common In-Memory Use Cases
몽상현
2024. 5. 23. 14:28
1. Caching
1.1. Query caching
- Hit rate 고려해서 사용
1.2. full web-page caching
- TTL: 설정한 기간 동안 데이터를 유지한다는 것을 보장함. TTL 지난 데이터는 바로 삭제되지 않고 여유가 될 때 지워짐
- Eviction: 데이터 용량이 꽉 차면 어떤 데이터부터 지울 것인지 설정해야 함
- key를 만들때 어렵고 복잡하게 만든다고 redis에서 파티셔닝 성능이 높아지지 않음
- key를 hash 함수를 이용해 hash 값으로 지정하는 것이 best practice
2. Session Store
- Access Token은 Redis에 저장하고 Refresh Token은 영속성 있는 RDB에 저장해서 관리하는 경우도 있음
3. Leaderboards
- RDB에서 집계, 순위 함수를 사용하는 것보다 Redis 데이터 구조를 활용하는 것이 훨씬 빠른 속도를 보여줌.
4. Geospatial
- 택시의 경우 실시간 위치를 업데이트하는 Data Store나 Stream이 필요
- 다이나모DB 차량 히스토리 데이터 업데이트 ElastiCache 실시간 데이터 업데이트 해서 위치기반 택시 호출
5. Chat & Messaging
- Key - value 스토어가 잘 맞음
- Redis의 pub-sub은 기본적으로 브로드캐스팅 방식 cluster모드에서 pub-sub을 사용하면 node의 개수가 늘어날 때마다 각 노드로 브로드캐스팅 해줘야 하기 때문에 성능이 저하됨. 7점대 부터는 샤디드 pub-sub을 사용하면 하나의 샤드 안에서만 성능 100% 보장. 그 외 100의 성능 보장하기 위해서는 노드 개수가 1개일 때. 그래서 권장하지 않음
6. Machine Learning
- 대표적으로 OTT 애플리케이션의 개인화된 추천 리스트를 저장할 때 많이 사용
- Data store에 미리 추천 데이터를 계산해 두고 접속하면 보여줌
- 동시 접속 시 런타임에 모두 처리 불가능하기 때문에 (다이나모DB + Elastic Cache)하이브리드 형식으로 사용