NoSQL 먼저 알아보고, Redis를 보자
NoSQL | SQL |
---|---|
Collection | Table |
Document | Row |
Key,Field | Column |
: 스키마가 없으므로, 하나의 collection에 있는 Documens들은 각각 다른 field를 가질 수 있음
: 함께 사용하는 객체일 경우, 하나의 document에 합쳐서 사용(ex) 게시물 & 댓글)
: SQL의 JOIN을 사용하지 않음
: 초당 데이터가 수십만개씩 쌓이는 서비스가 많아지면서(온라인 서비스, 소셜 등), NoSQL을 사용하는 경우가 많아지고 있음
: 데이터의 분산처리, 빠른 쓰기 및 데이터의 안정성이 필요할 때 사용
: 특정 서버에 장애가 발생했을 때도 데이터 유실이나 서비스 중지가 없는 형태의 구조
레디스를 사용하려면 어딘가에서 레디스 서버를 실행하고, 레디스 클라이언트로 접속해야 함
RedisToGo - 무료 버전 서비스 사용해봄
클라이언트 - Jedis, Lettuce
Lettuce는 Netty 기반의 Redis Client로 비동기로 요청을 처리해 성능면에서 장점이 있다
Jedis 기반처럼, Pool을 별도로 사용하지 않아도 돼서 개발에 더 편함
Jedis는 Spring boot2.0부터 depracated됨
Jedis는 쓰레드에 안전하지 않음
기본 포트번호 : 6379
$ brew install redis
$ brew services start redis // start
$ brew services stop redis // stop
method | description |
---|---|
opsForValue | String을 쉽게 Serializable/Deserialize 해주는 interface |
opsForList | List를 쉽게 Serializable/Deserialize 해주는 interface |
opsForSet | Set을 쉽게 Serializable/Deserialize 해주는 interface |
opsForZSet | ZSet을 쉽게 Serializable/Deserialize 해주는 interface |
opsForHash | Hash를 쉽게 Serializable/Deserialize 해주는 interface |
Strings
기본 명령어
set
get
del
keys *
현재 key값들을 확인get key
key에 해당하는 valueset key value
key에 value 저장del key
key 삭제
List(l, r)
Redis Collection 중 하나
redis Strings의 묶음 자료 구조(Quick List 사용)
기본 명령어lpush
rpush
lpop
rpop
lrange
lpush key value
List의 index 0(head)으로 데이터 pushrpush key value
List의 index last로 데이터 pushlpop key
List의 index 0 데이터 poprpop key
List의 index last 데이터 pop
Set(s)
중복되지 않는 값을 데이터로 가지는 컬렉션
동일한 값 입력하면, 하나의 값만 남음
기본 명령어sadd
srem
smembers
scard
spop
sadd key member
set에 value 하나 추가srem key member
set에서 value 삭제smembers key
set에 속해있는 모든 member 조회scard key
set에 속해있는 member 개수 구함spop key
set에서 무작위로 member 가져옴
Sorted Set(z)
중복되지 않는 값을 데이터로 가지는 컬렉션
가중치(score)가지고 있고, 가중치에 따른 정렬된 순서를 가지고 있음
가중치가 == -> value로 sort
value 중복 X, score 중복 가능
기본 명령어zadd
zcard
zrange
zrangebyscore
zadd key score member
집합에 score, value 추가zcard key
집합에 있는 member 개수 조회zrange key start stop
index를 기준으로 start, stop을 범위로 하여 조회zrangebyscore ky min max
score를 기준으로 min, max 범위로 하여 조회
Hash(h)
key - value로 이루어진 자료구조
key 하나에 field와 value 쌍을 40억개까지 저장 가능
기본 명령어hset
hget
hdelv
hlen
hgetAll
hkeys
hvals
hset key field value
key에 field와 value 쌍으로 지정hget key field
key에서 field로 value 가져옴hdel key field
key에서 field 삭제hlen key
field의 개수hgetAll key
field와 value를 모두 반환hkeys key
모든 field 반환hvals key
모든 value 반환
expire
지정한 시간 이후 key를 자동 삭제하는 명령어
key - value 쌍에 Time To Live(TTL) 설정 가능
expire
ttl
expire key member second
key에 ttl 설정ttl key
남은 ttl을 초단위로 확인
encoding 설정
redis-cli set ker "한글"