- 가장 기본적인 데이터 타입으로 제일 많이 사용됨
 - 바이트 배열을 저장 (binary-safe)
 - 바이너리로 변활할 수 있는 모든 데이터를 저장 가능(JPG와 같은 파일 등)
 - 최대 크기는 512MB
 
명령어 | 
기능 | 
예제 | 
| SET | 특정 키에 문자열 값을 저장한다 | SET say hello | 
| GET | 특정 키의 문자열 값을 얻어온다 | GET say | 
| INCR | 특정 키의 값을 Integer로 취급하여 1 증가시킨다 | INCR mycount | 
| DECR | 특정 키의 값을 Integer로 취급하여 1 감소시킨다 | DECR mycount | 
| MSET | 여러 키에 대한 값을 한번에 저장한다 | MSET mine milk yours coffee | 
| MGET | 여러 키에 대한 값을 한번에 받아온다 | MGET mine yours | 
- Linked-list 형태의 자료구조(인덱스 접근은 느리지만 데이터 추가/삭제가 빠름)
 - Queue와 Stack으로 사용할 수있음
 
명령어 | 
기능 | 
예제 | 
| LPUSH | 리스트의 왼쪽(head)에 새로운 값을 추가한다 | LPUSH mylist apple | 
| RPUSH | 리스트의 오른쪽(tail)에 새로운 값을 추가한다 | RPUSH mytlist banana | 
| LLEN | 리스트에 들어있는 아이템 개수를 반환한다 | LLEN mylist | 
| LRANGE | 리스트의 특정 범위를 반환한다 | LRANGE mylist 0 -1 | 
| LPOP | 리스트의 왼쪽(head)에서 값을 삭제하고 반환한다 | LPOP mylist | 
| RPOP | 리스트의 오른쪽(tail)에서 값을 삭제하고 반환한다 | RPOP mylist | 
- 순서가 없는 유니크한 값의 집합
 - 검색이 빠름
 - 개별 접근을 위한 인덱스가 존재하지 않고, 집합 연산이 가능(교집합, 합집합 등)
 
명령어 | 
기능 | 
예제 | 
| SADD | Set에 데이터를 추가한다 | SADD myset apple | 
| SREM | Set에서 데이터를 삭제한다 | SREM myset apple | 
| SCARD | Set에 저장된 아이템 개수를 반환한다 | SCARD myset | 
| SMEMBERS | Set에 저장된 아이템들을 반환한다 | SMEMBERS myset | 
| SISMEMBER | 특정 값이 Set에 포함되어 있는지를 반환한다 | SISMEMBER myset apple | 
- 하나의 key 하위에 여러개의 field-value 쌍을 저장
 - 여러 필드를 가진 객체를 저장하는 것으로 생각할 수 있음
 - HINCRBY 명령어를 사용해 카운터로 활용가능
 
명령어 | 
기능 | 
예제 | 
| HSET | 한개 또는 다수의 필드에 값을 저장한다 | HSET user1 name bear age 10 | 
| HGET | 특정 필드의 값을 반환한다 | HGET user1 name | 
| HMGET | 한개 이상의 필드 값을 반환한다 | HMGET user1 name age | 
| HINCRBY | 특정 필드의 값을 Integer로 취급하여 지정한 숫자를 증가시킨다 | HINCRBY user1 viewcount 1 | 
| HDEL | 한개 이상의 필드를 삭제한다 | HDEL user1 name age | 
- Set과 유사하게 유니크한 값의 집합
 - 각 값은 연관된 score를 가지고 정렬되어 있음
 - 정렬된 상태이기에 빠르게 최소/최대값을 구할 수 있음
 - 순위 계산, 리더보드 구현 등에 활용
 
명령어 | 
기능 | 
예제 | 
| ZADD | 한개 또는 다수의 값을 추가 또는 업데이트 한다 | ZADD myrank 10 apple 20 banana | 
| ZRANGE | 특정 범위의 값을 반환한다(오름차순으로 정렬된 기준) | ZRANGE myrank 0 1 | 
| ZRANK | 특정 값의 위치(순위)를 반환한다 (오름차순으로 정렬된 기준) | ZRANK myrank apple | 
| ZREVRANK | 특정 값의 위치(순위)를 반환한다 (내림차순으로 정렬된 기준) | ZREVRANK myrank apple | 
| ZREM | 한개 이상의 값을 삭제한다 | ZREM myrank apple | 
- 비트 벡터를 사용해 N개의 Set을 공간 효율적으로 저장
 - 하나의 비트맵이 가지는 공간은 4,294,967,295(2^32-1)
 - 비트 연산 가능
 
명령어 | 
기능 | 
예제 | 
| SETBIT | 비트맵의 특정 오프셋에 값을 변경한다 | SETBIT visit 10 1 | 
| GETBIT | 비트맵의 특정 오프셋의 값을 반환한다 | GETBIT visit 10 | 
| BITCOUNT | 비트맵에서 set(1) 상태인 비트의 개수를 반환한다 | BITCOUNT visit | 
| BITOP | 비트맵들간의 비트 연산을 수행하고 결과를 비트맵에 저장한다 | BITOP AND result today yesterday | 
- 유니크한 값의 개수를 효율적으로 얻을 수 있음
 - 확률적 자료구조로서 오차가 있으며, 매우 큰 데이터를 다룰 때 사용
 - 18,446,744,073,709,551,616(2^64)개의 유니크 값을 계산 가능
 - 12KB까지 메모리를 사용하며 0.81%의 오차율을 허용
 
명령어 | 
기능 | 
예제 | 
| PFADD | HyperLogLog에 값들을 추가한다 | PFADD visit Jay Peter Jane | 
| PFCOUNT | HyperLogLog에 입력된 값들의 cardinality(유일값의 수)를 반환한다 | PFCOUNT visit | 
| PFMERGE | 다수의 HyperLogLog를 병합한다 | PFMERGE result visit1 visit2 | 













