- Published on
Redis란 무엇일까
- Authors
- Name
- ywj9811
Redis란 무엇일까
Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템 (DBMS)이다.
왜 사용할까
데이터 베이스가 있음에도 Redis를 사용하는 이유는 무엇일까
데이터 베이스는 데이터를 물리 디스크에 직접 쓰기 때문에 서버에 문제가 발생하여도 데이터 손실이 발생하지 않는다.
이러한 장점이 있지만 매번 디스크에 접근해야 하기 때문에 사용자가 많아질수록 부하가 많아져서 느려질 수 있다.
따라서 이런 부하의 문제를 해결하기 위해서 일부는 캐시 서버로 이용할 수 있는 이러한 Redis를 사용하는 것이다.
Redis는 캐시 서버로 데이터를 임의의 공간에 저장하여 다음에 읽을 때는 빠르게 결괏값을 받을 수 있도록 도와주는 공간이다.
Redis의 특징
- Key, Value 구조이기 때문에 따로 쿼리를 사용하지 않는다.
- 데이터를 디스크에 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 속도가 빠르다.
- String, Lists, Sets, Sorted Sets, Hashes 자료 구조를 지원한다.
- String : 가장 일반적인 Key - Value 구조
- Sets : String의 집합으로 여러 값을 하나의 Value에 넣을 수 있다.
- Sorted Sets : 중복된 데이터를 담지 않는 Set 구조에 정렬 Sort를 적용한 구조로 랭킹 보드 서버 같은 구현에서 사용될 수 있다.
- Single Threaded 구조이다.
- 한번에 하나의 명령만 처리할 수 있다.
Redis 사용시 주의점
- 서버와 분리된 데이터 베이스가 아니기 때문에 서버에 장애가 발생했을 때 어떻게 대처할지 그에 대한 운영 플랜이 꼭 필요하다. (데이터 유실 발생 위험)
- 메모리 관리가 중요하다.
- 싱글 스레드기 때문에 한번에 하나의 명령어만 처리할 수 있다. 따라서 처리하는데 오래 걸리는 명령 혹은 요청은 피하는 것이 좋다.
명령어
저장
명령어 | 설명 |
---|---|
set key value | key, value 저장 |
mset key value [key value…] | 여러 개의 key, value를 한번에 저장 |
setex key seconds value | key, seconds, value 저장 (설정한 시간 *seconds 뒤에 소멸) |
조회
명령어 | 설명 |
---|---|
key * | 현재 저장된 키값들을 모두 확인 (부하 조심) |
get key | 지정한 key에 해당하는 value를 가져온다. |
mget key [key…] | 여러 개의 key에 해당하는 value를 한번에 가져온다. |
ttl key | key의 만료 시간을 초 단위로 보여준다. |
pttl key | key 의 만료 시간을 밀리초 단위로 보여준다. |
type key | 해당 key의 value 타입 확인 |
삭제
명령어 | 설명 |
---|---|
del key [key…] | 해당 key 들을 삭제 |
수정
명령어 | 설명 |
---|---|
rename key newKey | key 이름 변경 |
expire key seconds | 해당 키 값의 만료 시간 설정 |
기타
명령어 | 설명 |
---|---|
randomkey | 랜덤한 key 반환 |
ping | 연결 여부 확인 (”ping” 입력 시 “PONG” 이라는 응답이 와야함) |
dbsize | 현재 사용중인 DB의 key 개수 리턴 |
flushall | Redis 서버의 모든 데이터 삭제 |
flushdb | 현재 사용중인 DB의 모든 데이터 삭제 |