Koras02
Koras02코딩웹
Koras02
전체 방문자
오늘
어제
  • 분류 전체보기 (299)
    • 백엔드 (59)
      • nestjs (2)
      • Ruby (3)
      • PostgresQL (11)
      • MySQL (5)
      • Haskell (7)
      • Koa (3)
      • Java (3)
      • Python (5)
      • Rust (5)
      • MongoDB (2)
      • PHP (3)
      • Spring Boot (1)
      • redis (5)
      • deno (2)
    • 웹서버 (3)
      • nginx (1)
      • Apache (2)
      • Google Web Server (0)
    • 모바일개발 (5)
      • Figma (0)
      • React Native (2)
      • swift (0)
      • Flutter (3)
      • Kotlin (0)
    • 프론트 엔드 (158)
      • HTML (34)
      • CSS (7)
      • Javascript (35)
      • Angular (0)
      • Typescript (2)
      • React (58)
      • Vue (2)
      • GIT (6)
      • GraphQL (1)
      • Doker (4)
      • Go (8)
      • svelte (1)
      • gatsby (0)
    • etc. (47)
      • Notion (0)
      • TIL (24)
      • Algorithm (17)
      • Algorithm 개념 정리 (2)
      • Wiki (3)
      • Official document (1)
    • 웹개념 (12)
    • 변수정리 (1)
    • VSCode (2)
    • 포트폴리오 분석 (2)
      • React (2)
    • os (5)
      • 윈도우 (4)
      • Mac (0)
      • 가상머신 (0)
      • linux (1)
    • 응용프로그램언어 (2)
      • C (2)
      • C++ (0)
      • C# (0)
    • 블로그 운영관련 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
글쓰기

공지사항

  • [공지사항] 개발 이슈나 공식문서 업데이트 업로드 예정입니⋯

인기 글

태그

  • Rust
  • mysql
  • go
  • PostgreSQL
  • redis
  • 프로그래머스
  • Haskell
  • Flutter
  • React
  • html5
  • 알고리즘
  • 데이터 타입
  • Til
  • koa
  • javascript
  • 문자열
  • 하스켈
  • Java
  • CSS
  • html

티스토리

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
Koras02

Koras02코딩웹

[Redis] Redis - Redis 집합
백엔드/redis

[Redis] Redis - Redis 집합

2023. 2. 17. 01:45
728x90

이번 시간에는 Redis 집합체에 대해 알아보도록 하겠습니다. 

 

Redis Sets 

 

Redis Sets이란 고유 문자열(구성원)의 순서

없는 집합을 의미합니다.

 

Redis Sets를 사용하여  다음 작업을 효율적으로

수행할 수 있습니다. 

 

  • 고유 항목 추적(예: 지정된 블로그에 게시물을 엑세스하는 
    모든 고유 IP 주소 추적)
  • 관계(예: 주어진 역할을 가진 모든 사용자 집합)를 나타냄
  • 교차점, 결합 및 차이와 같은 공통 집합 연산을 수행 

Redis Sets 사용

 

다음과 같이 사용자 123 및 456의 즐겨찾기 부분에

사용자가 읽을 책 ID 집합을 저장합니다.

> SADD user:123:favorites 347
(integer) 1
> SADD user:123:favorites 561
(integer) 1
> SADD user:123:favorites 742
(integer) 1
> SADD user:456:favorites 561
(integer) 1

아래와 같이 사용자 123이 742번과 299번 책을 

좋아하는지 확인할 수 있습니다.

> SISMEMBER user:123:favorites 742
(integer) 1
> SISMEMBER user:123:favorites 299
(integer) 0

사용자 123과 456번은 공통적으로 좋아하는 

책이 있는지 확인할 수 있습니다.

> SINTER user:123:favorites user:456:favorites
1) "561"
  • 123 사용자가 선호하는 책은 몇 권인지도 확인할 수 있습니다.
> SCARD user:123:favorites
(integer) 3

Redis 집합 최대크기

 

Redis 집합의 최대 크기는 2^32 - 1(4,294,967,295) 맴버 입니다.

 


Redis 집합 명령어

  • SADD: 집합에 새 맴버을 추가
  • SREM: 집합에서 지정된 맴버를 제거
  • SISMEMBER: 설정된 구성원 자격에 대한 문자열 테스트
  • SINTER: 두 개 이상의 집합이 공통으로 갖는 맴버 집합(교차점)을 반환
  • SCARD: 집합의 크기(cardinality)를 반환

성능

 

항목이 설정으로 맴버 여부를 추가 제거 확인하는 것을 

포함해 대부분의 설정 작업은 O(1) 입니다.

 

이것은 수십만 명 이상의 회원을 가진 대형 

사이트의 경우에 매우 효율적인 시스템 입니다.

 

단 SMEMBERS 명령어를 실행할 떄는 

주의 사항이 있습니다. 

 

이 명령은 O(n)으로 단일 응답으로 

전체 집합을 반환합니다.

 

또는 세트의 모든 구성원을 반복적으로

검색하고 싶다면 SSAN을 사용하면 됩니다.

 


집합 명령어를 대체하려면?

 

대용량 데이터 세트(or 스트리밍 데이터)에서

많은 메모리를 사용할 수 있는 구성원 자격

검사를 설정하면 됩니다. 

 

만약 메모리 사용량이 걱정되고 완변한 정밀도가

필요하지 않을 경우 BloomFilter 또는 CuckooFilter

대안으로 사용하면 됩니다.

 

Redis Sets는 인덱스의 일종으로 자주 사용됩니다.

데이터를 인덱싱하고 쿼리해야 할 경우에는 

RedisSearch 및 RedisJ를 사용합니다.

 


참고 문서

 

Redis sets

Introduction to Redis sets

redis.io

 

'백엔드 > redis' 카테고리의 다른 글

[Redis] Redis - Redis 리스트  (0) 2023.02.08
[Redis] Redis - Redis 문자열  (0) 2023.01.31
[Redis] Redis 설치하기 - Linux 기준  (0) 2023.01.30
    '백엔드/redis' 카테고리의 다른 글
    • [Redis] Redis - Redis 리스트
    • [Redis] Redis - Redis 문자열
    • [Redis] Redis 설치하기 - Linux 기준
    • [redis] 공식문서 파해치기
    Koras02
    Koras02
    현재 사용중인 언어 - next-js,react,vue, typescript

    티스토리툴바