Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- mybatis
- reactive
- VCS
- r
- Linux
- javascript
- git
- socket
- html
- spring
- redis
- Static
- mongodb
- Elk
- Lombok
- 네트워크
- NoSQL
- cache
- ajax
- 데이터통신
- HTTP
- nodejs
- Heap
- effective
- network
- Java
- libuv
- AWS
- reactor
- github
Archives
- Today
- Total
빨간색코딩
Redis maxmemory (policy, samples, replica-ignore) 본문
redis 기본 개념 포스팅 : https://sjh836.tistory.com/178
maxmemory
- https://redis.io/docs/manual/config/
- redis.conf 에서 초기설정 가능
- 런타임에는 CONFIG SET 으로 가능
- 32bit : 3GB
- 64bit : 0 = 상한선없음
- RAM을 모두 사용하면, 디스크 swap 까지 사용
- swap 사용부터는 상당한 성능저하
- redis cluster 에서도 동작은 한다.
- 다만, 한 장비에 N개의 노드를 뛰울 경우, maxmemory 를 잘 생각해야한다.
- A 장비에 master 노드, slave 노드를 뛰울거면, ÷2 를 해야..
- RDB 에 스냅샷을 남기는 경우, BGSAVE 를 수행하는 스레드가 메모리를 사용할 수도 있으므로, 고려해야한다.
maxmemory-policy
- https://redis.io/docs/manual/eviction/
- noeviction : 기존 데이터 삭제X. maxmemory 시, OOM 발생하며, 새 데이터 저장X
- allkeys-lru : LRU 로 삭제해서 공간확보 후 저장
- LRU : 가장 오래 사용하지 않은 것
- allkeys-lfu : LFU 로 삭제해서 공간확보 후 저장
- LFU : 가장 적게 사용한 것
- redis 4.0 부터 지원
- volatile-lru : ttl 이 설정되서 expire 대상 중에 LRU 로 삭제해서 공간확보 후 저장
- volatile 류는 대상이 없으면 noeviction 로 동작한다.
- volatile-lfu : ttl 이 설정되서 expire 대상 중에 LFU 로 삭제해서 공간확보 후 저장
- redis 4.0 부터 지원
- volatile-ttl : ttl 이 설정되서 expire 대상 중에 ttl 이 짧은 것부터 삭제해서 공간확보 후 저장
- allkeys-random : 랜덤삭제해서 공간확보 후 저장
- volatile-random : ttl 이 설정되서 expire 대상 중에 랜덤삭제해서 공간확보 후 저장
maxmemory-samples
- lru 의 정밀도라고 볼 수 있다.
- 정밀할 수록 더 많은 비용이 들어가기 때문에, 적당한 값을 권장한다.
- 5가 기본. 10은 정밀. 3은 빠르지만 상대적 비정밀
replica-ignore-maxmemory
- https://redis.io/docs/manual/replication/
- redis 5.0 부터, 복제 노드들은 maxmemory 설정을 기본적으로 무시한다.
- slave 라는걸 인지하고 무시하는건 아니고, write 가 master에서 처리되고 slave로 전달되니, 구조적으로 그렇다는 것이다.
- master와 slave 노드가 서로 다른 maxmemory 값을 갖고 있으면 문제가 될 여지가 있다.
- 따라서, replica-ignore-maxmemory yes 를 통해 예방이 가능하다.
'database' 카테고리의 다른 글
[데이터 중심 애플리케이션 설계] 2장. 데이터 모델과 질의 언어 (1) | 2022.05.01 |
---|---|
[데이터 중심 애플리케이션 설계] 1장. 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 어플리케이션 (0) | 2022.04.18 |
Kafka 기본 개념 (토픽, 파티션, 성능, 고가용성, 프로듀서, 컨슈머) (1) | 2021.07.11 |
Redis 기본 개념 (기초, Collection 타입, Expire, Persistence) (2) | 2020.06.25 |
Commons DBCP2 (dbcp 정의, 커넥션 속성, Evictor, 트랜잭션, Statements Pool, 예제) (1) | 2018.04.11 |
Comments