# Redis
[ 용어정리 ]
* Cache Hit?
Cache 서버에 Cache가 있으면 바로바로 클라이언트에게 응답을 준다.
* CDN(콘텐츠 전송 네트워크)
CDN은 지리적으로 분산된 여러 개의 서버
웹 콘텐츠를 사용자와 가까운 곳에서 전송함으로써 전송 속도를 높인다.
In-Memory DB vs. Disk Resident DB
- In-Memory는 Dist에 비해 최소의 CPU를 사용하고 보다 단순한 search 알고리즘을 사용할 수 있음
- In-Memory는 recovery만을 위한 최소 I/O를 사용하고 disk는 CRUD 전체를 위해 I/O를 사용
- In-Memory는 휘발성이며 disk는 비휘발성이다
: 때문에 cache server로 사용하는 redis의 경우 존재하는 server가 문제가 생기면
데이터가 날아갈 위험을 가지고 있다.
- 인메모리는 locking을 coarse-grained하게 하며, Disk는 fine-grained하게 한다.
* coarse-grained -> 덩어리로 작업 -> 빠르고 단순한 최적화 / 데이터를 확장하기에는 한계
* fine-grained -> 잘게 쪼개서 작업 -> 쉽게 확장가능하고 안정적 / 복잡한 구조로 인해 느림
memcached 와의 비교
공통점 : high-performance /key-value
차이점 :
redis는 In-memory non-relational DB -> Collection 제공
memcached는 In-memory key-value cache -> keys to values
* 여기서 mongoDB와의 차이점은 뭘까?
mongoDB는 onDisk non-relational DB 이다.
GET : 값가져오기
SET : 저장하기
DEL : 삭제하기
set hello redis
> OK
get hello
> "redis"
del hello
> 1 (integer) -> 삭제된 item의 숫자
양 끝의 값을 꺼내기에는 빠르지만, 가운데 값을 꺼내는데는 시간이 소요되므로 사용에 주의해야함
RPUSH : 리스트의 오른쪽 끝에 값 넣기
LRANGE : 범위안의 값들 가져오기
LINDEX : 특정 위치의 값 가져오기
LPOP : 왼쪽의 값 pop and return
rpush list-key item
> 1 -> 이때 결과로 반환되는 숫자는 현재 리스트의 길이
rpush list-key item2
> 2
lrange list-key 0 -1
> item
item2
lindex list-key 1
> item
lpop list-key
> item2 -> pop 후에는 사라짐
Lists와 비슷하다.
hash table을 사용해 unique
비 순차적이다.