Redis Set 실습: 집합 연산과 활용법

2024. 9. 11. 10:37·DB/Redis

이 Redis 집합(Set) 자료구조를 사용하여 팔로우 관계를 관리하는 예를 보여주고 있습니다. Redis의 Set은 중복을 허용하지 않는 고유한 값들의 집합을 저장할 수 있는 자료구조입니다. 각 명령어의 의미는 다음과 같습니다:

1. SADD 명령어로 Set에 값 추가

SADD "users:100:follow" 150 130 120
  • SADD 명령어는 Set에 값을 추가합니다.
  • 여기서는 "users:100:follow"라는 키를 가진 Set에 150, 130, 120 값을 추가하고, 추가된 값의 개수는 3입니다.

2. SCARD 명령어로 Set의 크기 확인

SCARD users:100:follow
  • SCARD는 Set의 요소 개수를 반환합니다.
  • users:100:follow Set에는 3개의 값이 포함되어 있습니다.

3. 중복된 값 추가 시

SADD users:100:follow 150
  • 이미 Set에 존재하는 값인 150을 추가하려고 시도했지만, Set은 중복을 허용하지 않기 때문에 추가되지 않았습니다. 반환값은 0입니다.
SADD users:100:follow 150 130 110
  • 이미 존재하는 150과 130은 추가되지 않지만, 새로운 값인 110이 추가되었습니다. 반환값은 1입니다.

4. SMEMBERS 명령어로 Set의 모든 값 조회

SMEMBERS users:100:follow
  • Set의 모든 요소를 반환합니다. 결과는 110, 120, 130, 150입니다.

5. 새로운 값 추가

SADD users:100:follow 0
  • 새로운 값 0이 users:100:follow Set에 추가되었습니다.

6. SISMEMBER 명령어로 Set에 특정 값 존재 여부 확인

SISMEMBER users:100:follow 0
SISMEMBER users:100:follow 120
SISMEMBER users:100:follow 150
  • 각각의 값이 Set에 존재하는지 확인합니다. 0, 120, 150 모두 Set에 존재하기 때문에 반환값은 1입니다 (존재하지 않을 경우 0).

7. 다른 Set에 값 추가

SADD users:200:follow 150 10 30
  • users:200:follow Set에 150, 10, 30 값이 추가됩니다. 3개의 값이 추가되었습니다.

8. SINTER 명령어로 교집합 확인

SINTER users:100:follow users:200:follow
  • users:100:follow와 users:200:follow Set의 교집합을 확인합니다. 두 Set 모두에 존재하는 값은 150입니다.

9. SREM 명령어로 Set에서 값 제거

SREM users:200:follow 30
  • users:200:follow Set에서 30을 제거합니다. 반환값은 1로, 값이 성공적으로 제거되었음을 나타냅니다.

10. 최종적으로 SMEMBERS로 Set의 모든 값 확인

SMEMBERS users:200:follow
  • users:200:follow Set의 남은 값들은 10과 150입니다.

요약:

Redis의 Set 자료구조는 팔로우 관계와 같은 고유한 데이터를 저장하고 관리하는 데 유용합니다. 이 세션에서는 Set을 사용하여 다음과 같은 작업을 수행하였습니다:

  1. Set에 값 추가 (SADD)
  2. Set 크기 확인 (SCARD)
  3. 중복된 값 추가 방지
  4. Set의 모든 값 조회 (SMEMBERS)
  5. Set에서 값 존재 여부 확인 (SISMEMBER)
  6. 교집합 연산 (SINTER)
  7. Set에서 값 제거 (SREM)

이런 기능을 활용하면 효율적으로 팔로우 관계와 같은 집합 연산을 처리할 수 있습니다.


다음은 자바 코드로 redis를 조작하는 실습 내용입니다.

jedis.sadd("users:500:follow", "100", "200", "300");
jedis.srem("users:500:follow", "100");

Set<String> smembers = jedis.smembers("users:500:follow");
smembers.forEach(System.out::println);

System.out.println(jedis.sismember("users:500:follow", "200"));
System.out.println(jedis.sismember("users:500:follow", "120"));

System.out.println(jedis.scard("users:500:follow"));

코드 설명:

  • jedis.sadd: users:500:follow라는 Set에 "100", "200", "300" 값을 추가합니다.
  • jedis.srem: users:500:follow라는 Set에서 "100" 값을 제거합니다.
  • jedis.smembers: Set의 모든 값을 조회하여 출력합니다.
  • jedis.sismember: Set에 "200"과 "120" 값이 있는지 확인합니다. (true 또는 false 출력)
  • jedis.scard: Set의 크기를 확인하고 출력합니다.

이 코드는 Redis의 Set 자료구조를 활용한 간단한 예제입니다.

저작자표시 (새창열림)

'DB > Redis' 카테고리의 다른 글

Redis Sorted Set 실습: 정렬된 데이터를 효율적으로 처리하기  (0) 2024.09.11
Redis Hash 실습: 키-필드-값 데이터 구조 관리하기  (1) 2024.09.11
Redis 문자열 실습: 기본 데이터 타입 다루기  (1) 2024.09.11
Redis 데이터타입 정리: 문자열부터 복합 데이터까지  (0) 2024.09.11
Redis CLI 사용법: 명령어로 시작하기  (1) 2024.09.11
'DB/Redis' 카테고리의 다른 글
  • Redis Sorted Set 실습: 정렬된 데이터를 효율적으로 처리하기
  • Redis Hash 실습: 키-필드-값 데이터 구조 관리하기
  • Redis 문자열 실습: 기본 데이터 타입 다루기
  • Redis 데이터타입 정리: 문자열부터 복합 데이터까지
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (283)
      • 여러가지 (107)
        • 알고리즘 & 자료구조 (72)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (1)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (38)
        • 파이썬 (30)
        • 자바 (3)
        • 스프링부트 (5)
      • 운영체제 (0)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (2)
        • 도커 (2)
        • AWS (0)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (0)
        • 정보처리기사 (0)
      • 재태크 (5)
        • 암호화폐 (5)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바
    Python
    Spring WebFlux
    mybatis
    완전탐색
    파이썬
    reactor
    항해99
    docker
    시험
    OOP
    백준
    그리디
    FastAPI
    spring
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    AWS
    celery
    DP
    java
    ecs
    Spring Boot
    SAA
    RDS
    Redis
    취업리부트
    WebFlux
    Docker-compose
    EC2
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
Redis Set 실습: 집합 연산과 활용법
상단으로

티스토리툴바