본문 바로가기
Computer Science/데이터베이스

[Redis] Redis의 자료구조

by AndoneKwon 2022. 10. 3.

Redis

레디스는 아래 링크한 이전 게시물에서 간단하게 설명했듯이 NoSQL의 일종이며 In-memory에 저장되므로 굉장히 다양한 자료구조를 지원한다. 이번에는 각 자료구조들에 대해서 알아보도록 하겠다.

 

String

String은 이름 그대로 단순히 String을 저장하는 방식으로 Key/Value 형식으로 값이 저장된다.

my-redis:6379> set test 10
my-redis:6379> get test
"10"

 

Set(집합)

Set은 자바에서 Set과 거의 동일하다고 볼 수 있다. 데이터를 중복해서 저장하지 않고 정렬을 하지 않는다.

my-redis:6379> sadd testSet test
(integer) 1
my-redis:6379> sadd testSet test
(integer) 0
my-redis:6379> sadd testSet test2
(integer) 1
my-redis:6379> smembers testSet
1) "test2"
2) "test"

 

Sorted Set

Set과 동일하지만 정렬을 유지하는 Set이다. Score라는 값을 기준으로 정렬을 하게 된다.

아래 명령어를 확인해보면 실제로 정렬되는 것을 확인할 수 있다.

my-redis:6379> zadd scored_set_test 0 test1
(integer) 1
my-redis:6379> zadd scored_set_test 1 test5
(integer) 1
my-redis:6379> zadd scored_set_test 5 test2
(integer) 1
my-redis:6379> zadd scored_set_test 3 test4
(integer) 1
my-redis:6379> zrange scored_set_test 0 -1
1) "test1" //0
2) "test5" //1
3) "test4" //3
4) "test2" //5

 

List

우리가 일반적으로 생각하는 List 구조이며 해당 구조는 LinkedList로 이루어져있다. 

주로 Queue와 Stack으로 사용된다.

Key안에 Value가 없으면 Key는 자동으로 삭제되게 된다.

(값이 없는 경우에는 자동으로 Key가 자동으로 생성되지만 있는 경우에만 넣는 것도 가능하다.)

my-redis:6379> lpush test_list 1 //왼쪽에 값 추가
(integer) 1
my-redis:6379> lpush test_list 2
(integer) 2
my-redis:6379> lrange test_list 0 10
1) "2"
2) "1"
my-redis:6379> rpush test_list 3 //오른쪽에 값 추가
(integer) 3
my-redis:6379> lrange test_list 0 10
1) "2"
2) "1"
3) "3"

Hashes

Java에서의 HashMap과 유사한 구조로 하나의 Key안에 여러개의 Field와 Value로 이루어져있다.

하나의 Key안에 field-value 쌍을 40억개(4,294,967,295)까지 저장 가능하다.

my-redis:6379> hset test_hashes key1 1
(integer) 1
my-redis:6379> hset test_hashes key2 2
(integer) 1
my-redis:6379> hset test_hashes key3 3
(integer) 1
my-redis:6379> hget test_hashes key1
"1"
my-redis:6379> hkeys test_hashes
1) "key1"
2) "key2"
3) "key3"
my-redis:6379> hvals test_hashes
1) "1"
2) "2"
3) "3"
my-redis:6379>

 

이처럼 Redis에는 다양한 자료구조가 있고 각 자료구조마다의 특성이 다르기 때문에 케이스에 맞는 것을 잘 골라 사용해야 한다.

Redis는 기본적으로 in-memory에 저장되기 때문에(설정에 따라 파일에 저장할 수 있다.) 데이터를 최대한 효율적으로(공간적 효율성) 저장하기 위한 방법을 제공하고 있다.

하지만 효율적인 방식으로 저장하기 위한 제약조건이 존재하며 그것의 대표적인 예로 ZIP LIST라는 자료구조가 등장하였다.

이는 다음에 추가로 작성하겠다.


이전글

https://andonekwon.tistory.com/100

 

Cache Server 정리

1. Cache란? 캐시는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산

andonekwon.tistory.com

 

참조

http://redisgate.kr/redis/introduction/redis_intro.php

 

Redis Introduction

redis_intro Redis Introduction Redis Introduction 주요 특징 데이터 저장소로 디스크가 아닌 메모리를 사용합니다.   그리고 데이터의 안전한 보관과 백업을 위해 다른 서버의 메모리에 실시간으로 복사본

redisgate.kr

 

'Computer Science > 데이터베이스' 카테고리의 다른 글

Cache Server 정리  (0) 2022.08.24