2022-10-19-TIL
2022-10-19-TIL
Today I Learned
Redis
Redis 공식 문서는 Redis를 “data structure server”라고 소개한다. 단순히 문자열 값을 저장하는 키-값 저장소가 아니라, 값 자리에 여러 자료구조를 두고 그 자료구조에 맞는 명령을 서버에서 바로 실행한다는 뜻이다(Redis data types). 주요 자료구조와 대표적인 쓰임은 다음과 같다.
| 자료구조 | 설명 | 흔한 쓰임 |
|---|---|---|
| String | 바이트 시퀀스. 가장 기본 타입 | 캐시, 카운터 |
| List | 삽입 순서를 유지하는 문자열 목록 | 큐, 최근 항목 |
| Set | 중복 없는 문자열 집합. 추가, 삭제, 포함 여부가 O(1) | 태그, 방문자 집합 |
| Hash | 필드-값 쌍의 모음 | 객체 한 건 저장 |
| Sorted Set | 점수 순으로 정렬된 집합 | 랭킹, 순위표 |
| Stream | append-only 로그처럼 동작 | 이벤트 기록과 소비 |
데이터를 메모리에 두기 때문에 빠르지만, 서버가 내려가면 메모리의 데이터는 사라진다. 그래서 Redis는 디스크에 남기는 방법을 두 가지 제공한다(Redis persistence).
- RDB: 정해진 간격으로 데이터셋 전체의 스냅샷을 남긴다. 파일이 작고 재시작이 빠르지만, 마지막 스냅샷 이후의 변경은 잃을 수 있다.
- AOF: 서버가 받은 쓰기 명령을 모두 로그로 남기고, 재시작할 때 다시 실행해 데이터를 복원한다. 기본 정책인 매초 fsync에서는 장애가 나도 약 1초 분량만 잃는다.
문서는 PostgreSQL 수준의 안전성을 원하면 둘을 함께 쓰고, 몇 분 정도의 유실을 감수할 수 있으면 RDB만 써도 된다고 안내한다. 캐시로만 쓴다면 영속성을 아예 끄기도 한다.
키마다 만료 시간을 줄 수 있다는 점도 캐시로 많이 쓰이는 이유다. EXPIRE로 만료를 설정하면 시간이 지난 키는 자동으로 삭제되고, Redis는 접근 시점에 만료를 확인하는 방식과 주기적으로 일부 키를 골라 지우는 방식을 함께 쓴다(EXPIRE).
1
2
3
SET session:42 "user-data"
EXPIRE session:42 1800
TTL session:42
- http://redisgate.kr/redis/introduction/redis_intro.php
- https://meetup.toast.com/posts/224
- https://redis.io/docs/
- https://redis.io/docs/about/
- https://redis.io/docs/manual/
- https://redis.io/docs/getting-started/
- https://redis.io/commands/
- https://brunch.co.kr/@skykamja24/575
- https://wildeveloperetrain.tistory.com/m/21
- https://devlog-wjdrbs96.tistory.com/m/374
- https://aws.amazon.com/ko/elasticache/what-is-redis/
참고한 자료외부 출처 3
이 글은 저작권자의 CC BY 4.0 라이선스를 따릅니다.
댓글
아직 댓글이 없습니다