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
기본 명령어
setgetdel
keys *현재 key값들을 확인get keykey에 해당하는 valueset key valuekey에 value 저장del keykey 삭제
List(l, r)
Redis Collection 중 하나
redis Strings의 묶음 자료 구조(Quick List 사용)
기본 명령어lpushrpushlpoprpoplrange
lpush key valueList의 index 0(head)으로 데이터 pushrpush key valueList의 index last로 데이터 pushlpop keyList의 index 0 데이터 poprpop keyList의 index last 데이터 pop
Set(s)
중복되지 않는 값을 데이터로 가지는 컬렉션
동일한 값 입력하면, 하나의 값만 남음
기본 명령어saddsremsmembersscardspop
sadd key memberset에 value 하나 추가srem key memberset에서 value 삭제smembers keyset에 속해있는 모든 member 조회scard keyset에 속해있는 member 개수 구함spop keyset에서 무작위로 member 가져옴
Sorted Set(z)
중복되지 않는 값을 데이터로 가지는 컬렉션
가중치(score)가지고 있고, 가중치에 따른 정렬된 순서를 가지고 있음
가중치가 == -> value로 sort
value 중복 X, score 중복 가능
기본 명령어zaddzcardzrangezrangebyscore
zadd key score member집합에 score, value 추가zcard key집합에 있는 member 개수 조회zrange key start stopindex를 기준으로 start, stop을 범위로 하여 조회zrangebyscore ky min maxscore를 기준으로 min, max 범위로 하여 조회
Hash(h)
key - value로 이루어진 자료구조
key 하나에 field와 value 쌍을 40억개까지 저장 가능
기본 명령어hsethgethdelvhlenhgetAllhkeyshvals
hset key field valuekey에 field와 value 쌍으로 지정hget key fieldkey에서 field로 value 가져옴hdel key fieldkey에서 field 삭제hlen keyfield의 개수hgetAll keyfield와 value를 모두 반환hkeys key모든 field 반환hvals key모든 value 반환
expire
지정한 시간 이후 key를 자동 삭제하는 명령어
key - value 쌍에 Time To Live(TTL) 설정 가능
expirettl
expire key member secondkey에 ttl 설정ttl key남은 ttl을 초단위로 확인
encoding 설정
redis-cli set ker "한글"