DB

[Redis] Data Type (Strings, Lists, Sets, Hashes)

Raconer 2024. 2. 23. 00:13
728x90

1. String

  • 가장 기본적인 데이터 타입으로 제일 많이 사용됨
  • 바이트 배열을 저장(binary-safe)
    • 모든 문자를 저장 가능
  • 바이너리로 변환할수 있는 모든 데이터를 저장 가능(JPG와 같은 파일 등)
  • 최대 크기는 512MB (1개의 kEY)
  • 주로 cache, html code등을 저장 하여 사용한다.

 사용방법

> SET myname helllo
> OK
> GET myname
> "hello"
명령어 기능 예제
SET 특정 키에 문자열 값을 저장 SET say hello
GET 특정 키의 문자열 값을 반환 GET say
INCR 특정 키의 값을 INTEGER로 취급하여 1증가 INCR mycount
DECR 특정 키의 값을 INTEGER로 취급하여 1감소 DECR mycount
MSET 여러 키에 대한 값을 한번에 저장 MSET mine milk yours coffe
MGET 여러 키에 대한 값을 한번에 반환 MGET mine yours

 

2. List

  • Linked-list 형태의 자료 구조
    • 인덱스 접근은 느리지만 데이터 추가/삭제가 빠름
  • Queue와 Stack으로 사용할 수 있음
> LPISH mylist value1
> 1
> LPUSH mylist value2
> 2
> LLEN mylist
> 2
> RPOP mylist
> "value1"
명령어 기능 예제
LPUSH 리스트의 왼쪽(head)에 새로운 값을 추가 LPUSH mylist apple
RPUSH 리스트의 오른쪽(tail)에 새로운 값을 추가 RPUSH mylist banana
LLEN 리스트에 들어있는 아이템 개수를 반환 LLEN mylist
LRANGE 리스트의 특정 범위를 반환 LRANGE 0 -1
LPOP 리스트의 왼쪽(head)에서 값을 삭제 하고 반환 LPOP mylist
RPOP 리스트의 오른쪽(tail)에서 값을 삭제하고 반환 RPOP mylist

 

3. Sets

  • 순서가 없는 유니크한 값의 집합
  • 검색이 빠름
  • 개별 접근을 위한 인덱스가 존재하지 않고, 집합 연산이 가능(교집합, 합집합 등)
  • 활용 예제 ) 이벤트성 쿠폰 발급(1인당 1개 쿠폰 발)
> SADD myset apple
> 1
> SADD myset banana
> 1
> SISMEMBER myset banana
> 1
> SISMEMBER myset grape
> 0
명령어 기능 예제
SADD Set에 데이터를 추가 SADD myset apple
SREM Set에서 데이터를 삭제 SREM myset apple
SCARD Set에 저장된 아이템 개수를 반환 SCARD myset
SMEMBERS Set에 저장된 아이템들을 반환 SMEMBERS myset
SISMEMBER 특정 값이 Set에 포함되어 있는지를 반환 SISMEMBER myset apple

4. Hashes

  • 하나의 Key하위에 여러개의 field-value 쌍을 저장
  • 여러 필드를 가진 객체를 저장하는 것으로 생각 할 수 있음
  • HINCRBY명령어를 사용해 카운터로 활용가능
> HSET user1 name bear age 10
> 2
> HGET user1 name
> "bear"
> HGET user1 name age
> "bear"
> "10"
명령어 기능 예제
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

 

728x90

'DB' 카테고리의 다른 글

[Redis] Spring Boot Redis 기본 설정  (0) 2024.02.24
[Redis] Data Type (Sorted Sets, Bitmaps, HyperLogLog)  (0) 2024.02.23
[Redis] Redis란?  (0) 2024.02.20
MongoDB 구성  (0) 2024.02.18
SQL VS NoSQL (MongoDB 공부 전 )  (0) 2024.02.18