개발/Linux,Server

우아한 Redis - 강대명

호돌맨 2019. 11. 21. 20:09

우아한 Redis - 강대명

11월 21일 우아한형제들(잠실)에서 강대명님의 Redis 세미나가 있었습니다.

주요 포인트

  • Redis는 자료구조가 Atomic 하기 때문에 Race Condition을 피할 수 있다.
  • SortedSet의 Score는 실수형이기 때문에 부동 소수점에 유의하자.
  • 하나의 컬렉션에 너무 많은 아이템을 담으면 좋지 않다. 수천개가 적당함.
  • Expire는 Collection에 걸림
  • 메모리 관리를 잘하자. Swap이 발생하면 메모리 Page 접근시마다 느려짐
  • 큰 메모리를 사용하는 instance 하나보다 적은 메모리를 사용하는 여러 instance 여러개가 안전함
  • 데이터의 사이즈가 다양한 것 보다는 유사한게 유리하다.
  • 메모리를 줄이기 위해서 Ziplist를 이용하자.
  • O(N) 명령어를 자제하자 (하단에 대표 명령어들)
  • KEYS는 scan 명령어로 대체할 수 있다.
  • Collection의 모든 item을 가져와야 할 때
    • 자체 기능을 이용해 scan을 한다.
    • 여러개의 작은 collection으로 저장한다.

redis.conf 권장 설정

  • Maxclient: 50000
  • RDS/AOF 설정 off
  • 특정 commands off
    • keys
    • AWS의 ElasticCache는 이미 하고있음
  • 전체 장애의 90% 이상이 KEYS와 SAVE 설정을 사용해서 발생
  • 적절한 ziplist 설정

자제해야하는 대표적 O(N) 명령어들

  • KEYS
  • FLUSHALL, FLUSHDB
  • Delete Collections
  • Get All Collections