Database/Redis
[Redis] Redis Data Type
[dev] hiro
2024. 5. 16. 15:19
제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
String 유형
문자열을 Value로 사용하는 것은 가장 단순한 형태.
문자열을 Value로 사용하고, html 문자열을 캐시하는 식의 활용 방식이 있음.
특징
- Value에 string, number들을 저장. => 저장시 별도의 타입이 존재하지 않음.
SET
- 값을 세팅할 때는 SET을 사용
# 값이 이미 있으면 실패 : nx
# 값이 이미 있을 때만 성공 : xx
SET [keyName] [value]
GET
- 값을 찾아올 때는 GET을 사용.
GET [keyName]
INCR, DECR
- 값이 정수인 경우, INCR과 DECR(increment, decrement) 명령어 활용 가능.
INCR [keyName]
DECR [keyName]
EXISTS
- value의 존재 여부를 확인
- 있으면 1, 없으면 0을 반환
EXIST [key1] [key2] ...
DEL
- 해당 key를 삭제
- 삭제에 성공했으면 1, 실패하면 0 반환
DEL [key1] [key2] ...
EXPIRE
- TTL 설정
- 단위는 초
EXPIRE [keyName] 5
Lists
특징
- Value에 list를 저장.
lpush / rpush
- 왼쪽에 값을 넣어주거나 오른쪽에 값을 넣어줌.
lrange
- 값을 조회. 이때 -1은 모두 가져오라는 뜻
rpop
- 이를 이용해 queue 구현 가능
rbpop
- 순차적인 분산 작업 구현 가능
- rpop과 비슷하나 데이터가 없다면 데이터가 들어올 때까지 block 상태로 대기
Sets
특징
- Value에 set을 저장.
- list는 중복을 허용하나 set은 중복이 안됨.
SADD
- 집합(Set)에 하나 이상의 멤버를 추가
- SADD test_sets 1은 test_sets라는 이름의 집합에 멤버로 1을 추가
SMEMBERS
- 집합(Set)에 모든 멤버를 반환
- SMEMBERS test_sets은 test_sets라는 이름의 집합에 모든 멤버 반환
Sorted sets
특징
- Value에 set을 저장.
- 중복 불가능 하며, scores 필드를 기준으로 정렬됨
- 중복이 안되면 동일한 value를 넣으면 기존 데이터의 score를 덮어서 데이터 순서가 바뀜.
zadd
- Sorted Set에 멤버와 점수를 추가하는 데 사용
- test_ssets라는 이름의 Sorted Set에 멤버 1과 점수 1을 추가. => 성공(1)
- zadd test_ssets "a" 2은 에러발생
- Sorted Set은 멤버의 순서를 기준으로 정렬하는데, 문자열은 정렬되지 않는 데이터 타입이기 때문.
- 마지막으로 zadd test_ssets "0" 2와 같이 문자열 "0"을 멤버로 추가한 경우
- 이 경우는 정상적으로 처리되며, 정수로 간주하여 추가.
- 새로운 멤버가 추가되었으므로 (integer) 0이 반환.
zrange
- zrange 명령어는 Sorted Set의 멤버들을 조회하는 명령어.
- zrange test_ssets 0 -1 명령어는 test_ssets Sorted Set의 첫 번째 멤버부터 마지막 멤버까지 모두 조회.
Hashes
특징
- Hashes key/value 목록을 가짐.
hset
- 명령어는 해시에 필드와 값을 설정
- HSET htest username hi는 htest라는 이름의 해시에 username 필드에 hi 값을 설정합니다. 반환된 정수 값 1은 새 필드가 생성되었음을 나타냄
- 같은 방식으로 HSET htest userpwd asdf는 htest 해시에 userpwd 필드에 asdf 값을 설정
hget
- 해시에서 특정 필드의 값을 가져옴.
- HGET htest username은 htest 해시에서 username 필드의 값을 가져옵니다. 여기서는 "hi"가 반환됩니다.
- HGET htest temp는 존재하지 않는 필드인 temp의 값을 가져오려고 시도합니다. 이 경우, 해당 필드가 존재하지 않기 때문에 nil이 반환됩니다.
hgetall
- 해시의 모든 필드와 값을 반환
- HGETALL htest는 htest 해시의 모든 필드와 값을 가져옵니다. 여기서는 "username", "hi", "userpwd", "asdf"가 번갈아가면서 반환
Bitmaps
특징
- Value에 bit값 저장
- 512MB 용량으로 2^32(42억)개의 bit 값들을 저장
- boolean 옵션으로 많이 사용.(회원마다 공지 조회 여부)
setbit
- setbit 명령어는 주어진 오프셋(offset)에 비트 값을 설정하는데 사용.
- 여기서 "test_bits"라는 이름의 비트열(Bitfield)에 대해 첫 번째 비트(오프셋 0)를 1로 설정.
- 새로운 비트가 설정되었으므로 (integer) 0을 반환.
getbit
- getbit 명령어는 주어진 오프셋에 해당하는 비트 값을 가져오는데 사용.
- "test_bits" 비트열의 첫 번째 비트(오프셋 0)의 값.
- 비트 값이 1로 설정되어 있으므로 (integer) 1이 반환.
참조
더보기
- 레디스 data type: https://kimpaper.github.io/2016/07/27/redis-datatype/