이 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:followSet에는 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:followSet에 추가되었습니다.
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:followSet에 150, 10, 30 값이 추가됩니다. 3개의 값이 추가되었습니다.
8. SINTER 명령어로 교집합 확인
SINTER users:100:follow users:200:follow
users:100:follow와users:200:followSet의 교집합을 확인합니다. 두 Set 모두에 존재하는 값은 150입니다.
9. SREM 명령어로 Set에서 값 제거
SREM users:200:follow 30
users:200:followSet에서 30을 제거합니다. 반환값은1로, 값이 성공적으로 제거되었음을 나타냅니다.
10. 최종적으로 SMEMBERS로 Set의 모든 값 확인
SMEMBERS users:200:follow
users:200:followSet의 남은 값들은 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 실습: 키-필드-값 데이터 구조 관리하기 (2) | 2024.09.11 |
| Redis 문자열 실습: 기본 데이터 타입 다루기 (1) | 2024.09.11 |
| Redis 데이터타입 정리: 문자열부터 복합 데이터까지 (0) | 2024.09.11 |
| Redis CLI 사용법: 명령어로 시작하기 (1) | 2024.09.11 |