redis.conf
각종 파라미터 값을 수정할 수 있는 레디스 설정 파일
- 보안을 위한 파라미터
- bind [server IP]: bind에 추가된 서버와 통신가능
- protected-mode : 보안 설정 proctected mode가 yes이고 bind가 설정되어 있지 않으면
127.0.0.1
인 local만 접속이 가능하지만 no인 경우 모든 IP가 접근가능하다
- requirepass [password] : 접속 시 사용할 패스워드 입력
- 데이터를 파일러 저장하는 persistence 기능
- RDB와 AOF는 cache로 사용할때는 사용하지 않고 secondary서버에서의 사용만 고려해볼만 하다
- save : RDB파일을 저장하는 옵션
""
을 권장
- stop-writes-on-bgsave-error : save를 사용할때는
no
를 권장 해당 옵션이 yes일 경우 RDB 파일 저장이 실패할때 레디스에 write할 수 없게 된다.
- appendonly : 캐시용은 no / AOF옵션을 사용해야 한다면 yes
- auto-aof-rewrite-percentage : append Only 특징으로 rewrite를 하지않으면 지속적으로 데이터가 늘어나기 때문에 100(100%)으로 두어 rewrite가 될 수 있게끔 한다.
- 기타 설정
- deamonize : no일 경우 foreground로 실행, yes일 경우 background로 실행
- maxclinet : 최대로 연결 할 수 있는 client의 수 (50000)이하 권장
max memory
- Redis가 인지하는 자기가 사용하는 최대 메모리
- Redis는 memory allocate(jemalloc)에 의존하고 있음
- Redis는 정확히 자신이 사용하는 메모리를 인지하지 못함
- max memory는 가용 메모리의 60~70%로 설정하는 것을 권장한다.
- max memory를 설정하더라도 이보다 더 사용할 가능성이 존재 -> 메모리 파편화 현상
RSS 모니터링
를 구축해 Redis가 보고하는 사용 메모리(used Memory)와 실제 사용되는 물리 메모리(RSS)를 비교해볼 필요가 있다.
- 메모리가 꽉 찼을때 memory-policy에 따라 처리방법이 다른데
maxmemory-policy volatile-lru
는 가장 최근에 사용하지 않는 값을 삭제하는 정책으로 필요 없는 값을 삭제하고 새로운 입력을 받는 것을 통해 캐시 용도로 사용 할 때 권장된다.
Redis server가 차지하는 Real Memory 사용량(실제 물리 메모리 사용량)
Redis 운영 시 주의사항
메모리 관리
- physical Memory 이상으로 메모리를 사용하면 swap공간을 사용하여 disk를 사용하게 되어 느려진다.
- 큰 메모리를 사용하는 instance 하나보다 적은 메모리를 사용하는 instance 여러대가 번거롭더라도 안전하다.
- 메모리가 부족하면 ziplist를 이용하는 것도 방법이다.
ziplist
- 속도는 느려지지만 메모리는 더 적게 사용하는 자료구조
- sorted set의 default 자료구조는 skiplist이다.
명령어
- Redis의 단순 get/set은 초당 10만 TPS 이상 정도의 성능을 가지고 있다.
- Redis는 Single thread로 동작하기 때문에 O(N)명령어들을 사용할 때 주의해야 한다.
- 대표적인 O(N) 명령어 및 대안
- KEYS -> SCAN 명령어를 사용해 긴 명령을 짧은 여러번의 명령으로 바꿀 수 있다.
- FLUSHALL, FLUSHDB
- Delete Collections
- Get All Collections -> Collection의 일부만 가져오거나 작은 여러개의 Collection으로 나눠 저장한다
참고자료
http://redisgate.kr/redis/server/server_monitor.phphttps://meetup.nhncloud.com/posts/227
https://www.youtube.com/watch?v=mPB2CZiAkKM
https://www.youtube.com/watch?v=mPB2CZiAkKM