πŸ’Έ [Redis] λ ˆλ””μŠ€ 데이터 νƒ€μž…: Sets

μ΄μ„œΒ·2023λ…„ 10μ›” 4일
0

πŸ’Έ Redis νŠΈλž™

λͺ©λ‘ 보기
5/5

πŸŽοΈπŸ’¨Β μ•ˆλ…•ν•˜μ„Έμš”, μ΄μ„œμž…λ‹ˆλ‹€! 이번 ν¬μŠ€νŠΈμ—μ„œλŠ” Redis 데이터 νƒ€μž… 쀑 ν•˜λ‚˜μΈ Sets에 λŒ€ν•΄μ„œ ν¬μŠ€νŒ…ν•˜λ €κ³  ν•©λ‹ˆλ‹€!

κ°œμš”

Redis SetsλŠ” 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” κ³ μœ ν•œ κ°’λ“€μ˜ μ»¬λ ‰μ…˜μ„ μ €μž₯ν•˜λŠ” 데이터 νƒ€μž…μž…λ‹ˆλ‹€. SetsλŠ” 집합 μ—°μ‚°(ꡐ집합, 합집합, 차집합)을 μ§€μ›ν•˜μ—¬ 멀버 κ°„μ˜ 관계λ₯Ό νŒŒμ•…ν•˜κ±°λ‚˜ ν•„μš”ν•œ 멀버λ₯Ό μΆ”μΆœν•  λ•Œ μœ μš©ν•΄μš”. νƒœκ·Έ, 관심 주제, 온라인 μ‚¬μš©μž λͺ©λ‘κ³Ό 같은 λ‹€μ–‘ν•œ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ 쀑볡 제거 및 멀버십 검사와 같은 μž‘μ—…μ„ 효율적으둜 μˆ˜ν–‰ν•  수 μžˆμ–΄μš”.

λͺ…λ Ήμ–΄

  1. SADD key member [member …]: ν•˜λ‚˜ μ΄μƒμ˜ 멀버λ₯Ό Sets에 μΆ”κ°€ν•΄μš”.
> SADD myset 1 2 3 1 1
(integer) 3
  1. SCARD key: Sets의 멀버 수λ₯Ό λ°˜ν™˜ν•΄μš”.

SCARDμ—μ„œ CARDλŠ” Cardinality(카디널리티)λ₯Ό λ‚˜νƒ€λ‚΄μš”. μΉ΄λ””λ„λ¦¬ν‹°λŠ” μ§‘ν•©μ΄λ‚˜ μ»¬λ ‰μ…˜ μ›μ†Œμ˜ 개수 λ˜λŠ” 크기λ₯Ό μ˜λ―Έν•΄μš”.

> SCAD myset
(integer) 3
  1. SISMEMBER key member: νŠΉμ • 멀버가 Sets에 μ†ν•œ 멀버인지 확인할 수 μžˆμ–΄μš”.
> SISMEMBER myset 1
(integer) 1
> SISMEMBER myset 4
(integer) 0

νŠΉμ • 멀버가 Sets에 μ†ν•œ 멀버이면 1을 λ°˜ν™˜ν•˜κ³  μ•„λ‹ˆλΌλ©΄ 0을 λ°˜ν™˜ν•΄μš”.

  1. SREM key member [member …]: ν•˜λ‚˜ μ΄μƒμ˜ 멀버λ₯Ό Setsμ—μ„œ μ œκ±°ν•΄μš”.
> SREM myset 1 2
(integer) 2

> SREM myset 3
(integer) 1

> SREM myset 4
(integer) 0

μ—¬λŸ¬ 멀버λ₯Ό μ‚­μ œν•  경우 μ‚­μ œλœ λ©€λ²„μ˜ 개수λ₯Ό λ°˜ν™˜ν•΄μš”. μœ„μ˜ μ˜ˆμ œμ—μ„œλŠ” 1κ³Ό 2λ₯Ό 제거 μ‹œλ„ν•˜μ˜€κ³ , 1κ³Ό 2κ°€ myset에 μ‘΄μž¬ν•˜μ—¬ 두 개의 μ›μ†Œκ°€ μ œκ±°λ˜μ–΄ 2κ°€ λ°˜ν™˜λ˜μ—ˆμ–΄μš”. 반면 4의 κ²½μš°μ—λŠ” myset에 μ‘΄μž¬ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 0이 λ°˜ν™˜λ˜μ—ˆμ–΄μš”.

  1. SPOP key [count]: Setsμ—μ„œ λ¬΄μž‘μœ„ 멀버λ₯Ό ν•˜λ‚˜ λ˜λŠ” μ—¬λŸ¬ 개λ₯Ό popν•΄μš”.
# μœ„μ˜ μ˜ˆμ‹œμ—μ„œ mysetμ—μ„œ λͺ¨λ“  μš”μ†Œλ₯Ό μ œκ±°ν•˜μ˜€κΈ° λ•Œλ¬Έμ— ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄
# λ‹€μ‹œ 10개의 μ›μ†Œλ₯Ό λ„£μ„κ²Œμš”.
> SAD myset 1 2 3 4 5 6 7 8 9 10
(integer) 10

> SPOP myset
"7"

> SPOP myset
"1"

> SPOP myset 3
1) "6"
2) "10"
3) "9"

# 5개의 멀버λ₯Ό popν•˜μ—¬ ν˜„μž¬ myset에 남은 λ©€λ²„λŠ” 5κ°œμ—μš”.
> SCARD myset
(integer) 5
  1. SINTER key [key …]: μ—¬λŸ¬ Sets κ°„μ˜ ꡐ집합을 λ°˜ν™˜ν•΄μš”.
> SADD s1 1 2 3
(integer) 3
> SADD s2 2 3 4
(integer) 3
> SADD s3 3 4 5
(integer) 3

> SINTER s1 s2
1) "2"
2) "3"

> SINTER s2 s3
1) "3"
2) "4"

> SINTER s1 s2 s3
1) "3"

SINTER λͺ…λ Ήμ–΄μ—μ„œμ˜ INTERλŠ” Intersection(ꡐ집합)을 λ‚˜νƒ€λ‚΄μš”.

  1. SUNION key [key …]: μ—¬λŸ¬ Sets κ°„μ˜ 합집합을 λ°˜ν™˜ν•΄μš”.
> SUNION s1 s2
1) "1"
2) "2"
3) "3"
4) "4"

> SUNION s2 s3
1) "2"
2) "3"
3) "4"
4) "5"

> SUNION s1 s2 s3
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
  1. SDIFF key [key …]: μ—¬λŸ¬ Sets κ°„μ˜ 차집합을 λ°˜ν™˜ν•΄μš”.
> SDIFF s1 s2
1) "1"

> SDIFF s2 s1
1) "4"

> SDIFF s2 s3
1) "2"

> SDIFF s3 s2
1) "5"

> SDIFF s1 s2 s3
1) "1"

SDIFF λͺ…λ Ήμ–΄μ—μ„œ DIFFλŠ” Difference(차집합)을 λ‚˜νƒ€λ‚΄μš”.

  1. SRANDMEMBER key [count]: Setsμ—μ„œ λ¬΄μž‘μœ„ 멀버λ₯Ό ν•˜λ‚˜ λ˜λŠ” μ—¬λŸ¬ 개λ₯Ό λ°˜ν™˜ν•΄μš”. 단 SPOPκ³ΌλŠ” λ‹€λ₯΄κ²Œ μš”μ†Œλ₯Ό μ œκ±°ν•˜μ§€ μ•Šμ•„μš”.
> SRANDMEMBER s1
"3"

> SRANDMBMER s1 2
"3"
"2"

> SCARD s1
(integer) 3

마무리

이번 ν¬μŠ€νŒ…μ—μ„œλŠ” Redis 데이터 νƒ€μž…μ˜ Sets에 λŒ€ν•΄μ„œ 닀루어 λ³΄μ•˜μ–΄μš”. 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” νŠΉμ§•μ„ ν™œμš©ν•˜μ—¬ 쀑볡 제거, ꡐ집합, 합집합, 차집합, νƒœκ·Έ 등을 ν™œμš©ν•  수 μžˆμ–΄μš”. μ—¬λŸ¬ λΆ„μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ Setsλ₯Ό ν™œμš©ν•  수 μžˆλŠ” 뢀뢄을 ν•œλ²ˆ μ—°κ΅¬ν•΄λ³΄μ‹œλŠ” 것도 쒋을 것 κ°™μ•„μš”. 그럼 λ‹€μŒμ— λ΄¬μš” μ•ˆλ…•~πŸ‘‹

profile
πŸŽοΈπŸ’¨ Beep Beep

0개의 λŒ“κΈ€