Redis

NoSQL 데이터베이스는 단순 검색 및 추가 작업을 위한 매우 최적화된 키 값 저장 공간으로, 레이턴시와 스루 풋과 관련하여 상당한 성능 이익을 내는 것이 목적이다. NoSQL 데이터베이스는 빅데이터와 실시간 웹 애플리 케이션의 상업적 이용에 널리 쓰인다.

NO SQL은 Not only SQL의 줄임말로 NoSQL 시스템은 SQL 계열 쿼리 언어를 사용할 수 있다는 사실을 강조한 다는 면에서 "Not only SQL(SQL 뿐만이 아니고)"로 불리기도 한다.

redis 자체도 약어라고 하는데 REmote DIctionary Server의 약어라고한다.

Redis는 자주 Memcached와 비교되는 in memory 저장소 이다.

  1. 처리 속도가 빠르다. -당연히 데이터가 메모리에만 저장되므로 빠르다. 즉, 속도가 느린 Disk를 거치지 않는다.
  2. 데이터가 메모리에만 저장된다. -당연히 프로세스가 죽거나 장비가 Shutdown되면 데이터가 사라진다.
  3. 만료일을 지정하여 만료가 되면 자동으로 데이터가 사라진다. - 이름에서도 느껴지듯이 Cache이다
  4. 저장소 메모리 재사용 - 만료가 되지 않았더라도 더이상 데이터를 넣을 메모리가 없으면 LRU(Least recently used) 알고리즘에 의해 데이터가 사라진다.

그래서, 보통 대형 포털들에서 Static page, 또는 검색 결과 등을 캐쉬하는데 많이 사용한다

단점은 Redis는 '싱글 쓰레드'라는 점이다. 싱글 쓰레드는 1번에 1개의 명령어만 실행할 수 있다. 한 서비스에서 요청된 명령어에 대한 작업이 끝나기 전까진 다른 서비스에서 요청하는 명령을 못 받아들인다.1)

설정

sudo nano /etc/redis/redis.conf
sudo service redis-server restart

메모리

최대 메모리사용 설정

maxmemory 7gb

지맘대로 메모리를 몽땅 끌어다 쓰기 때문에 적당히 지정해주는 것이 좋다.

maxmemory-policy volatile-lru

메모리 한계에 도달하면 어떻게 할 것인지에 대한 정책.

RDB

레디스에서 디스크에 메모리 상태를 그대로 받아 저장하는(메모리스냅숏) RDB 기능이 레디스 서버 장애요인 99.9%를 차지한다 이 기능을 끄는 것이 좋다2)

설정에서 save 명령을 다 주석처리하면 됨.

제거

sudo apt-get purge --auto-remove redis-server