1.redis 개요

 

레디스(Redis)는 인메모리 데이터 저장소로서 key-value 기반의 NoSQL입니다. 이것은 모든 데이터를 메모리에 저장하고 조회하는 방식으로 작동합니다. 디스크 저장 방식의 데이터베이스가 필요하지 않은 상황에서 사용되며, 매우 빠른 성능을 제공합니다. 레디스는 다양한 자료 구조를 지원하며, 캐싱, 메시지 브로커 등 다양한 용도로 활용됩니다

 

-----------------------------------


2.redis 데이터 타입


2-1. Strings (문자열)
최대 512MB까지의 문자열 값을 저장할 수 있습니다.
이진 데이터나 JPEG 이미지와 같은 바이너리 데이터도 저장 가능합니다.
증감 연산에 적합하며, 문자열 간 매핑도 가능합니다.

 

SET --- 값을 저장하는 명령어
SETNX --- 값이 없는 경우에는 저장하는 명령어
GET --- 데이터 조회를 위한 명령어
MGET --- 여러개의 데이터를 한번에 조회할 수 있는 명령어
INCR --- 원자적 숫자 증가 명령어
DECR --- 원자적 숫자 감소 명령어

 

 

2-1.  Lists (리스트)
순서가 있는 데이터 집합으로, 중복 허용됩니다.
왼쪽 또는 오른쪽에서 요소를 추가하거나 제거할 수 있습니다.

이러한 특성으로 주로 큐(Queue)와 스택(Stack)으로 사용됩니다.

 

LPUSH(LEFT PUSH) -- 모든 값을 리스트의 처음에 넣는 명령어
RPUSH(RIGHT PUSH) -- 모든 값을 리스트의 마지막에 넣는 명령어
LPOP(LEFT POP) -- 리스트의 맨 처음 값을 뽑아내는 명령어
RPOP(RIGHT POP) -- 리스트의 맨 마지막 값을 뽑아내는 명령어
LLEN -- 리스트의 길이를 알아낼 수 있는 명령어
LTRIM -- 특정 인덱스까지 리스트를 잘라내는 명령어
LRANGE -- 특정 인덱스까지 값을 알아내는 명령어
BLPOP( Block Left pop ) -- 리스트에 값이 있을 경우에만 리스트의 LEFT 값을 리턴
BRPOP( Block right pop ) --  리스트에 값이 있을 경우에만 리스트의 RIGHT 값을 리턴
LREM -- 특정 값을 지정한 횟수만큼 제거합니다.
LINDEX -- 특정 인덱스의 값을 조회하거나 변경할 수 있습니다.
LSET -- 특정 인덱스의 값을 변경합니다.

LPOS -- 특정 값의 인덱스를 조회할 수 있습니다;.

 

예를 들어

특정 redis key의 List 형태 value의 "특정 데이터"만 삭제하는 로직을 생각해보자.

 

LREM 'listKey' 0 value1

(모든 'value1' 값을 삭제)

 

 

2-3.  Hashes (해시)
필드와 값으로 구성되며, 하나의 키에 여러 개의 필드를 저장할 수 있습니다.
주로 객체를 표현하는 데 사용됩니다.

(즉, value가 key value 형태로 이루어져 있습니다.)

 

HSET - hash 데이터 저장
HGET - hash 데이터 조회
HGETALL - hash 데이터 key value 모두 가져오기
HMGET - hash 데이터 value들만 가져오기
HDEL - hash 데이터 삭제
HINCRBY - hash 데이터 원자값 증가

 


2-4.  Sets (집합)
중복된 데이터를 허용하지 않는 집합입니다.
여러 개의 값으로 구성되며, 하나의 키에 여러 번 추가해도 중복되지 않습니다.

 

  1. SADD key member [member ...]: 하나 이상의 멤버를 Sets에 추가합니다.
    • 예시: SADD myset 1 2 3 (결과: 3, 중복 제거)
  2. SCARD key: Sets의 멤버 수를 반환합니다.
    • 예시: SCARD myset (결과: 3)
  3. SMEMBERS key: Sets의 모든 멤버를 조회합니다.
    • 예시: SMEMBERS myset (결과: [1, 2, 3])
  4. SISMEMBER key member: 주어진 멤버가 Sets에 속하는지 확인합니다.
    • 예시: SISMEMBER myset 2 (결과: 1, 멤버 존재)
  5. SREM key member [member ...]: Sets에서 멤버를 제거합니다.
    • 예시: SREM myset 3 (결과: 1, 멤버 제거)

 


2-5.  Sorted Sets (정렬된 집합)
Set에 'score’라는 필드가 추가된 데이터 타입입니다.
데이터 값을 score로 정렬하며, score가 같다면 데이터 값으로 정렬됩니다.
정렬된 데이터가 필요한 경우 사용합니다.

 

ZADD - Sorted Set 데이터추가
ZREM - Sorted Set 데이터삭제
ZRANGE - Sorted Set 조회
ZCARD - 해당 key에 몇개의 sorted set이 있는지 리턴
ZRANK / ZREVRANK - 순위 리턴 / 역순 순위 리턴
ZINCRBY - 증가 또는 감소된 score를 리턴

 

 

2-6.  Bitmaps (비트맵)
비트 단위로 데이터를 저장하는 자료구조입니다.
주로 비트 연산을 수행할 때 활용됩니다.

(비트맵 데이터 타입은 메모리를 적게 사용하여 대량의 데이터 저장에 유리합니다.)

 

SETBIT : 비트값 저장
GETBIT : 비트 조회
BITCOUNT : 값이 1인 비트의 개수를 세는 데 사용

 

 

 

2-7. Geospatial

Geospatial 은 2차원 지도상 위.경도 좌표를 의미합니다.

좌표를 저장할때 유용한 데이터타입이고, 이 좌표와 관련된 여려 명령어들을 제공합니다.

 

GEOADD : 좌표 저장
GEOSEARCH : 특정 좌표기준으로 주변에 저장된 좌표가 있는지 조회
GEODIST : 위치간 거리정보 조회기능
GEOPOS : 저장된 좌표 정보 조회

 


2-8.  HyperLogLogs (하이퍼로그로그)
고유한 요소의 개수를 추정하는 자료구조입니다.
중복을 제거하고 고유한 요소의 개수를 추적할 때 사용됩니다.

.

------------------------------------------------------

 

3.참고

https://blog.naver.com/PostView.naver?blogId=wjavmtngkr1&logNo=223333741269&categoryNo=36&parentCategoryNo=0&viewDate=&currentPage=2&postListTopCurrentPage=1&from=postView

 

Redis ) Redis 데이터 타입과 명령어 모음집(Strings,Lists )

Strings 가장 대표적인 타입으로 바이너리 , 문자 데이터를 저장한다. 그냥 우리 프로그래밍 언어 배울 때...

blog.naver.com

https://brunch.co.kr/@springboot/205

 

레디스 List, Sorted Set 자료형

스프링부트 환경에서 레디스 List, Sorted Set 자료형 사용 | 레디스는 다양한 데이터 자료구조를 제공한다. String List Hashes Set Sorted Set 이글에서는 List 와 Sorted Set 에 대해서 소개할 예정인데 레디스

brunch.co.kr

https://blog.naver.com/wjavmtngkr1/223334965551

 

Redis ) Redis 데이터 타입과 명령어 모음집(Hash , Sorted Set )

Hash Hash 는 key , value 쌍으로 데이터를 저장할 수 있는 데이터타입을 의미한다. 아마 이 구조에 대해...

blog.naver.com

https://blog.naver.com/wjavmtngkr1/223336644233

 

Redis ) Redis 데이터 타입과 명령어 모음집( Geospatial , Bitmap )

Geospatial Geospatial 은 2차원 지도상 위.경도 좌표를 의미한다. 좌표를 저장할때 유용한 데이터타입이...

blog.naver.com

 

'개발자 이야기 > 기타' 카테고리의 다른 글

RDB 인덱스  (0) 2024.05.08
Tree 자료구조 종류  (0) 2024.05.08

+ Recent posts