Redis는 Remoty Dictionary Server로 외부에 있는 Dictionary 자료구조를 사용하는 서버입니다.
Redis는 In-memory database로 데이터베이스보다 더 빠른 Memory에 더 자주 접근하고 덜 자주 바뀌는 데이터를 저장할 때 사용합니다.
여러 서버에서 같은 데이터를 공유할 때 사용합니다. Single Server여도 Atomic 자료구조 & 캐시를 사용하기 위해 사용합니다.
주로 사용하는 곳
인증 토큰 저장
Ranking 보드로 사용
Redis를 사용할 때 주의할 점
메모리 관리를 잘해야 합니다. RAM은 디스크 공간에 비해 작고 메모리의 할당과 해제가 빈번하기 때문에 메모리 단편화가 발생할 수 있습니다.
메모리 단편화란 RAM에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태라고 볼 때 메모리 단편화가 발생했다고 합니다. 이를 외부 단편화라고도 부릅니다.
Redis 4.0 부터는 activedefrag를 활용하여 메모리 단편화를 해소시킬 수 있습니다. activedefrag 란 중간에 알박기 하고 있는 데이터를 옆으로 이동시키고 memory block을 병합시키는 원리입니다.
싱글 스레드이기 때문에 O(N) 관련 명령어를 주의해야 합니다.
싱글 스레드이므로 시간 복잡도를 고려해야 합니다. 따라서 keys, flush, getAll 등의 기능들은 주의해서 사용해야 합니다.
Redis가 싱글 스레드인 이유는 Event Driven (비동기)로 처리하여 컨텍스트 전환 없이 많은 시간을 절약할 수 있습니다. 실제 명령에 대한 작업은 커널 I/O 레벨에서 Multiplexing 을 통해 처리하여 동시성을 보장합니다.
Redis는 Remoty Dictionary Server로 외부에 있는 Dictionary 자료구조를 사용하는 서버입니다. Redis는 In-memory database로 데이터베이스보다 더 빠른 Memory에 더 자주 접근하고 덜 자주 바뀌는 데이터를 저장할 때 사용합니다. 여러 서버에서 같은 데이터를 공유할 때 사용합니다. Single Server여도 Atomic 자료구조 & 캐시를 사용하기 위해 사용합니다.
주로 사용하는 곳
Redis를 사용할 때 주의할 점
메모리 관리를 잘해야 합니다. RAM은 디스크 공간에 비해 작고 메모리의 할당과 해제가 빈번하기 때문에 메모리 단편화가 발생할 수 있습니다. 메모리 단편화란 RAM에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태라고 볼 때 메모리 단편화가 발생했다고 합니다. 이를 외부 단편화라고도 부릅니다. Redis 4.0 부터는
activedefrag
를 활용하여 메모리 단편화를 해소시킬 수 있습니다.activedefrag
란 중간에 알박기 하고 있는 데이터를 옆으로 이동시키고 memory block을 병합시키는 원리입니다.싱글 스레드이기 때문에 O(N) 관련 명령어를 주의해야 합니다. 싱글 스레드이므로 시간 복잡도를 고려해야 합니다. 따라서
keys, flush, getAll
등의 기능들은 주의해서 사용해야 합니다. Redis가 싱글 스레드인 이유는 Event Driven (비동기)로 처리하여 컨텍스트 전환 없이 많은 시간을 절약할 수 있습니다. 실제 명령에 대한 작업은 커널 I/O 레벨에서 Multiplexing 을 통해 처리하여 동시성을 보장합니다.