이 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을 사용하여 다음과 같은 작업을 수행하였습니다:
- Set에 값 추가 (
SADD
) - Set 크기 확인 (
SCARD
) - 중복된 값 추가 방지
- Set의 모든 값 조회 (
SMEMBERS
) - Set에서 값 존재 여부 확인 (
SISMEMBER
) - 교집합 연산 (
SINTER
) - 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 실습: 키-필드-값 데이터 구조 관리하기 (0) | 2024.09.11 |
Redis 문자열 실습: 기본 데이터 타입 다루기 (1) | 2024.09.11 |
Redis 데이터타입 정리: 문자열부터 복합 데이터까지 (0) | 2024.09.11 |
Redis CLI 사용법: 명령어로 시작하기 (1) | 2024.09.11 |