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

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

πŸ’Έ Redis νŠΈλž™

λͺ©λ‘ 보기
4/5

πŸŽοΈπŸ’¨Β μ•ˆλ…•ν•˜μ„Έμš”, μ΄μ„œμ—μš”! 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” Redis의 Lists νƒ€μž…μ— λŒ€ν•΄μ„œ ν¬μŠ€νŒ… ν•˜κ³ μž ν•΄μš”.

κ°œμš”

Redis의 Lists 데이터 νƒ€μž…μ€ μˆœμ„œκ°€ μžˆλŠ” λ°μ΄ν„°μ˜ μ»¬λ ‰μ…˜μ„ μ €μž₯ν•˜λŠ” 데 μ‚¬μš©ν•΄μš”. 이 데이터 νƒ€μž…μ€ μ€‘λ³΅λœ 값을 ν—ˆμš©ν•˜λ©°, μ–‘μͺ½ λμ—μ„œ 데이터λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ μ œκ±°ν•  수 μžˆλŠ” μœ μ—°ν•œ ꡬ쑰λ₯Ό μ œκ³΅ν•΄μš”. ListsλŠ” 큐(Queue), μŠ€νƒ(Stack), λ©”μ‹œμ§€ λŒ€κΈ°μ—΄(Message Queue) λ“±μ˜ μš©λ„λ‘œ ν™œμš©ν•  수 μžˆμ–΄μš”.

Listsλ₯Ό μ‚¬μš©ν•˜λ©΄ λ‹€μŒκ³Ό 같은 μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμ–΄μš”.

  1. λ©”μ‹œμ§€ 큐: λ©”μ‹œμ§€ 브둜컀둜 ν™œμš©ν•˜μ—¬ 비동기 μž‘μ—… 및 이벀트 처리
  2. μ΅œμ‹  μ—…λ°μ΄νŠΈ 좔적: μ΅œμ‹  ν™œλ™μ„ μΆ”μ ν•˜κ³  λ‰΄μŠ€ ν”Όλ“œ, νƒ€μž„λΌμΈ, ν™œλ™ 슀트림
  3. μž‘μ—… 큐: λ°±κ·ΈλΌμš΄λ“œμ—μ„œ** μž‘μ—…μ„ μ²˜λ¦¬ν•˜κ³  μŠ€μΌ€μ€„λ§ν•˜μ—¬ μ‹œμŠ€ν…œ λΆ€ν•˜ μ΅œμ†Œν™”
  4. μˆœμ„œκ°€ μžˆλŠ” 데이터 μ €μž₯: μ£Όλ¬Έ λͺ©λ‘, 둜그, νžˆμŠ€ν† λ¦¬ λ“± μˆœμ„œκ°€ μ€‘μš”ν•œ 데이터 μ €μž₯

ListsλŠ” LPOP 및 RPUSH와 같은 λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ μ œκ±°ν•˜λ©°, 데이터가 순차적으둜 κ΄€λ¦¬λΌμš”. ListsλŠ” λ©”λͺ¨λ¦¬ λ‚΄μ—μ„œ 데이터λ₯Ό μ €μž₯ν•˜λ―€λ‘œ 데이터 읽기 및 μ“°κΈ°κ°€ λΉ λ₯΄λ©°, μ—¬λŸ¬ ν΄λΌμ΄μ–ΈνŠΈ 간에 데이터λ₯Ό κ³΅μœ ν•˜κ³  μ²˜λ¦¬ν•  λ•Œ μœ μš©ν•΄μš”. 이제 Lists 데이터 νƒ€μž…μ„ λ‹€λ£¨λŠ” λͺ…령어에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ„λ‘ ν• κ²Œμš” πŸ₯Έ.

λͺ…λ Ήμ–΄

  1. LPUSH key value [value ...]: 킀에 ν•΄λ‹Ήν•˜λŠ” 리슀트의 μ™Όμͺ½μ— 값을 μΆ”κ°€ν•΄μš”.
> LPUSH mylist "apple"
(integer) 1

# result: apple

> LPUSH mylist "banana" "cherry"
(integer) 3

# result: cherry banana apple
  1. RPUSH key value [value ...]: 킀에 ν•΄λ‹Ήν•˜λŠ” 리슀트의 였λ₯Έμͺ½μ— 값을 μΆ”κ°€ν•΄μš”.
> RPUSH mylist "date" "fig"
(integer) 5
cherry banana apple **date fig**
  1. LPOP key: 킀에 ν•΄λ‹Ήν•˜λŠ” λ¦¬μŠ€νŠΈμ—μ„œ μ™Όμͺ½ 끝의 μš”μ†Œλ₯Ό μ œκ±°ν•˜κ³  λ°˜ν™˜ν•΄μš”.
> LPOP mylist
cherry
  1. RPOP key: 킀에 ν•΄λ‹Ήν•˜λŠ” λ¦¬μŠ€νŠΈμ—μ„œ 였λ₯Έμͺ½ 끝의 μš”μ†Œλ₯Ό μ œκ±°ν•˜κ³  λ°˜ν™˜ν•΄μš”.
> RPOP mylist
fig
  1. LINDEX key index: 킀에 ν•΄λ‹Ήν•˜λŠ” 리슀트의 인덱슀 μš”μ†Œλ₯Ό λ°˜ν™˜ν•΄μš”.
> LINDEX mylist 2
apple
  1. LRANGE key start stop: 킀에 ν•΄λ‹Ήν•˜λŠ” 리슀트의 인덱슀의 λ²”μœ„λ₯Ό λ°˜ν™˜ν•΄μš”.
> LRANGE mylist 1 3
1) banana
2) apple
3) date

> LRANGE mylist 0 -1
cherry banana apple date
*인덱슀 번호λ₯Ό μ΄ν•΄ν•˜κΈ° 쉽도둝 κ·Έλ €λ³΄μ•˜μ–΄μš”!*

----------------------------------
|    0   |    1   |    2  |   4  |
|   -4   |   -3   |   -2  |  -1  |
| cherry | banana | apple | date |
----------------------------------
  1. LLEN key: 킀에 ν•΄λ‹Ήν•˜λŠ” 리슀트의 μš”μ†Œ 개수λ₯Ό λ°˜ν™˜ν•΄μš”(리슀트의 길이λ₯Ό λ°˜ν™˜ν•΄μš”).
> LLEN mylist
4
  1. LINSERT key BEFORE|AFTER pivot value: 킀에 ν•΄λ‹Ήν•˜λŠ” 리슀트의 pivot의 μ•ž, 뒀에 μš”μ†Œλ₯Ό μΆ”κ°€ν•΄μš”.
> LINSERT mylist BEFORE "banana" "grape"
(integer) 5

# result: cherry grape banana apple date
  1. LSET key index value: 킀에 ν•΄λ‹Ήν•˜λŠ” 리슀트의 인덱슀 μš”μ†Œ 값을 λ³€κ²½ν•΄μš”.
> LSET mylist 2 "lemon"
OK

# result: cherry grape lemon apple date
λ§Œμ•½ ν•΄λ‹Ήν•˜λŠ” μΈλ±μŠ€κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ μ•„λž˜μ™€ 같은 μ—λŸ¬ λ©”μ‹œμ§€κ°€ 좜λ ₯λΌμš”.

LSET mylist 10 "μ½”λ“œλ ˆμ΄μ„œ"
>> (error) ERR index out of range
  1. LREM key count value: 킀에 ν•΄λ‹Ήν•˜λŠ” λ¦¬μŠ€νŠΈμ—μ„œ valueλ₯Ό count만큼 μ œκ±°ν•΄μš”.
> LREM mylist 2 "apple"
(integer) 1               # ν•œ 개의 μš”μ†Œκ°€ μ‚­μ œλ˜μ—ˆμ–΄μš”.
cherry grape lemon date

ν™œμš©

μŠ€νƒ: Stack

lpush와 lpop을 μ΄μš©ν•˜κ±°λ‚˜, rpush와 rpop을 μ΄μš©ν•˜μ—¬, μŠ€νƒ(stack)을 κ΅¬ν˜„ν•  수 μžˆμ–΄μš”.

큐: Queue

lpush와 rpop을 μ΄μš©ν•˜κ±°λ‚˜, rpush와 lpop을 μ΄μš©ν•˜μ—¬, 큐(queue)λ₯Ό κ΅¬ν˜„ν•  수 μžˆμ–΄μš”.

마무리

이번 ν¬μŠ€νŒ…μ—μ„œλŠ” Redis의 Lists 데이터 νƒ€μž…μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μ•˜μ–΄μš”. ListsλŠ” 큐, μŠ€νƒ, λ©”μ‹œμ§€ λŒ€κΈ°μ—΄ λ“± λ‹€μ–‘ν•œ μš©λ„λ‘œ ν™œμš©ν•  수 μžˆμœΌλ‹ˆ, μ—¬λŸ¬λΆ„λ“€μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν™œμš© 및 μ‘μš© 방법에 λŒ€ν•΄ μ—°κ΅¬ν•˜μ—¬ μ μš©ν•  수 있기λ₯Ό λ°”λΌμš” 😎.

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

0개의 λŒ“κΈ€