반응형
Redis Sets 사용하기
Redis Sets는 중복을 허용하지 않는 고유한 값들의 컬렉션을 저장하는 데이터 타입이다.
Sets는 집합 연산(교집합, 합집합, 차집합)을 지원하며 멤버 간의 관계를 파악하거나 필요한 멤버를 추출하는데 유용하다. 태그, 관심 주제, 온라인 사용자 목록과 같은 다양한 시나리오에서 중복 제거 및 멤버십 검사와 같은 작업을 효율적으로 수행할 수 있다.
C#에서 레디스 Sets 사용 예제 코드
public class RedisSetExample
{
private readonly IDatabase _db;
public RedisSetExample(IDatabase db)
{
_db = db;
}
public void AddTag(string itemId, string tag)
{
_db.SetAdd($"item_tags:{itemId}", tag);
}
public List<string> GetTags(string itemId)
{
var tags = _db.SetMembers($"item_tags:{itemId}");
return tags.ToStringArray().ToList();
}
public void AddUserToSkillGroup(string skill, string userId)
{
_db.SetAdd($"skill:{skill}", userId);
}
public List<string> GetUsersWithSkill(string skill)
{
var users = _db.SetMembers($"skill:{skill}");
return users.ToStringArray().ToList();
}
public List<string> GetCommonSkills(string userId1, string userId2)
{
var commonSkills = _db.SetIntersect($"user_skills:{userId1}", $"user_skills:{userId2}");
return commonSkills.ToStringArray().ToList();
}
}
레디스 데이터 타입 Sets
- SADD key member [member ...] : 하나 이상의 멤버를 추가한다.
- SMEMBERS key : 해당 키의 멤버들을 조회한다.
- SCARD key : 해당 키의 집합이나 컬렉션 원소의 개수 또는 크기를 나타낸다.
- SISMEMBER key member : 특정 멤버가 Sets에 속한 멤버인지 확인한다.
- SREM key member [member ...] : 하나 이상의 멤버를 Sets에서 제거한다.
- SPOP key [count] : 무작위 멤버를 하나 또는 여러 개 Pop 한다.
- SINTER key [key ...] : 여러 sets 간의 교집합을 반환한다.
- SUNION key [key ...] : 여러 sets 간의 합집합을 반환한다.
- SDIFF key [key ...] : 여러 sets 간의 차집합을 반환한다.
- SRANDMEMBER key [count] : 무작위 멤버를 하나 또는 여러 개 반환한다.
SADD
sadd myset 1 2 3 g test
(interger) 5
SMEMBERS
smembers myset
1) "1"
2) "2"
3) "3"
4) "g"
5) "test"
SCARD
sacrd myset
(interger) 5
SISMEMBER
sismember myset a
(interger) 0
sismember myset g
(interger) 1
SREM, SPOP
srem myset 1
(integer) 1
smembers myset
1) "2"
2) "3"
3) "g"
4) "test"
spop myset 1
1) "2"
smembers myset
1) "3"
2) "g"
3) "test"
SINTER, SUNION, SDIFF
sadd myset2 1 2 3 g
(integer) 4
smembers myset2
1) "1"
2) "2"
3) "3"
4) "g"
sinter myset myset2
1) "3"
2) "g"
sunion myset myset2
1) "3"
2) "g"
3) "test"
4) "1"
5) "2"
sdiff myset myset2
1) "test"
SRANDMEMBER
smembers myset
1) "3"
2) "g"
3) "test"
srandmember myset
"3"
참고 사이트
'프로그래밍 > 데이터베이스' 카테고리의 다른 글
C# StackExchange로 Redis Hashes 데이터 구조 사용하기 (0) | 2024.12.04 |
---|---|
C# StackExchange로 Redis Strings 데이터 구조 사용하기 (0) | 2024.12.02 |
레디스(Redis) TTL 설정하기 (0) | 2024.04.23 |
StackExchange.Redis Subscribe()로 구독하기 (0) | 2023.12.27 |
Redis 자료구조(Data Structures) (11) | 2023.05.30 |
댓글