- Redis 자료 구조
- Strings
- Lists
- Sets
- Sorted Sets
- Hashes
종류
Strings
: 기본적인 key-value 구조Lists
Linked List
Sets
Sorted Sets
Sets
+ score(순위)
를 통해 score 값을 기준으로 순서 유지Hashes
: 내부에 key-value 구조가 더해짐Bit arrays
(bitMaps) : bit array 자료구조HyperLogLogs
Streams
참고 : Redis 레퍼런스
incr
, decr
, incrby
사용append
사용getrange
, setrange
를 통해 랜덤 엑세스 가능> set akey bvalue
OK
> get akey
"bvalue"
> set counter 100
OK
> incr counter
(integer) 101
> incr counter
(integer) 102
> incrby counter 50
(integer) 152
index
가 많다면? => Sorted Set 추천lpush
: 첫 번째 부분에 push(insert)lrange
: 일정 크기로 반환lpush
+ ltrim
: Lists의 크기를 항상 일정하게 고정rpush
+ rpop
: Stacklpush
+ rpop
: Queue> rpush list A
(integer) 1 # 들어있는 원소 수 반환
> rpush list B
(integer) 2
> lpush list CC
(integer) 3
> lrange list 0 -1 # 0을 기준으로 1은 다음, -1은 마지막, -2는 마지막에서 2번째
1) "CC"
2) "A"
3) "B"
###
> rpush list 1 2 3 4 5 "aaa"
(integer) 6
> lrange 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "aaa"
###
> rpush list a b c
(integer) 3
> rpop
"c" # 삭제되는 것 반환
> rpop
"b"
> rpop
"a"
사용처
sadd
: 원소 추가
Sets간 합집합 및 차집합 등 지원 (sinter
)
랜덤 원소 뽑기 (spop
, srandmember
)
> sadd aset 1 2 3
(integer) 3 # 원소 크기 반환
> smembers aset
1. 3
2. 1
3. 2
zadd
: score
와 원소값 추가zrank
, zrange
: 조회# zadd <name> <score> <element>
> zadd sset 40 "D"
(integer) 1
> zadd sset 57 "G"
(integer) 1
> zadd sset 53 "F"
(integer) 1
> zadd sset 49 "E"
(integer) 1
> zadd sset 65 "H"
(integer) 1
> zadd sset 14 "B"
(integer) 1
> zadd sset 16 "C"
(integer) 1
> zadd sset 69 "I"
(integer) 1
> zadd sset 12 "A"
(integer) 1
> zrange 0 -1 # score를 통해서 검색 처음(0)부터 끝까지(-1)
1) "A"
2) "B"
3) "C"
4) "D"
5) "E"
6) "F"
7) "G"
8) "H"
9) "I"
key - value(key - value)로 구성
예제를 통해 빠르게 익혀보자.
# > hmset <key> <hash key> <hash value> <hash key> <hash value> ...
> hmset user:1000 username jinmin year 1995 verified 1
OK
# > hget <key> <hash key>
> hget user:1000 username
"jinmin"
> hget user:1000 year
"1995"
> hgettall user:1000
1) "username"
2) "jinmin"
3) "year"
4) "1995"
5) "verified"
6) "1"
참고 사이트 : 사바라다는 차곡차곡 님의 블로그