λͺ©λ‘REDIS (3)

DevLog 😢

[Redis] RedisλŠ” μ–Έμ œ ν™œμš©ν•  수 μžˆμ„κΉŒ? 1편 - 뢄산락 κ΅¬ν˜„ν•˜κΈ° (2)

🌱 λ“€μ–΄κ°€κΈ° μ „ μ§€λ‚œ ν¬μŠ€νŒ…μ—μ„œλŠ” λ ˆλ””μŠ€λ₯Ό ν™œμš©ν•΄ 뢄산락을 κ΅¬ν˜„ν•˜λŠ” λ‹€μ–‘ν•œ 방법듀을 μ‚΄νŽ΄λ³΄μ•˜λ‹€. 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” 쑰금 더 색닀λ₯Έ λ°©λ²•μœΌλ‘œ λ ˆλ””μŠ€λ₯Ό ν™œμš©ν•˜μ—¬ 뢄산락을 κ΅¬ν˜„ν•΄λ³΄κ³ μž ν•œλ‹€. βœ” Case 4 - Lua Script ν™œμš©ν•˜κΈ° Redis 2.6 λ²„μ „μ—μ„œ 루아 슀크립트 엔진이 μΆ”κ°€λ˜λ©΄μ„œ, λ ˆλ””μŠ€ μ„œλ²„μ—μ„œ 루아 슀크립트λ₯Ό μ‹€ν–‰ν•  수 있게 λ˜μ—ˆλ‹€. λ ˆλ””μŠ€ λ‚΄λΆ€μ—μ„œλŠ” EVAL (ν˜Ήμ€ EVALSHA)μ΄λΌλŠ” λͺ…λ Ήμ–΄λ₯Ό 톡해 μ‚¬μš©ν•  수 μžˆλ‹€. EVAL script numkeys [key [key ...]] [arg [arg ...]] λ§Œμ•½ μŠ€ν¬λ¦½νŠΈκ°€ κΈΈμ–΄μ§€κ²Œ λœλ‹€λ©΄ 슀크립트 전체λ₯Ό EVAL둜 μ „μ†‘ν•˜κΈ°μ—λŠ” λ„€νŠΈμ›Œν¬ λŒ€μ—­μ˜ λΉ„μš©μ΄ λ°œμƒν•  수 있기 λ•Œλ¬Έμ—, λ ˆλ””μŠ€μ—μ„œλŠ” SCRIPT LOAD λͺ…λ Ήμ–΄λ₯Ό 톡해 슀크립트λ₯Ό ..

κ°œλ°œμΌμ§€ 2023. 10. 17. 09:24
[Redis] RedisλŠ” μ–Έμ œ ν™œμš©ν•  수 μžˆμ„κΉŒ? 1편 - 뢄산락 κ΅¬ν˜„ν•˜κΈ° (1)

🌱 λ“€μ–΄κ°€κΈ° μ „ 쑰금 였래되긴 ν–ˆμ§€λ§Œ 이전 ν¬μŠ€νŒ…μ—μ„œ λ„€μž„λ“œλ½μ„ ν†΅ν•œ 뢄산락 κ΅¬ν˜„μ„ μ§„ν–‰ν•˜μ˜€λ‹€. λ§ˆμ§€λ§‰ ν¬μŠ€νŒ…μ—μ„œ λ ˆλ””μŠ€λ₯Ό ν™œμš©ν•œλ‹€κ³  λ§ν–ˆμ—ˆλŠ”λ°, 계속 미루닀가 μ΄λ²ˆμ— λ ˆλ””μŠ€ 곡뢀λ₯Ό ν•˜λ©΄μ„œ κ°„λ‹¨ν•˜κ²Œ κ΅¬ν˜„μ„ μ§„ν–‰ν•΄λ³΄μ•˜λ‹€. 뢄산락에 λŒ€ν•œ κ°œλ…μ€ 이전 ν¬μŠ€νŒ…μ—μ„œ λ‹€λ£¨μ—ˆκΈ° λ•Œλ¬Έμ—, λ ˆλ””μŠ€λ₯Ό μ΄μš©ν•΄μ„œ λ°”λ‘œ 뢄산락을 κ΅¬ν˜„ν•΄λ³΄μž. λ˜ν•œ, μ§€λ‚œ ν¬μŠ€νŒ…μ—μ„œλŠ” Jmeterλ₯Ό ν™œμš©ν•˜μ˜€μ§€λ§Œ, 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” E2E ν…ŒμŠ€νŠΈλ₯Ό 톡해 직접 κ΅¬ν˜„μ„ ν•΄λ³΄κ³ μž ν•œλ‹€. 🌱 κ΅¬ν˜„ 상황 정말 κ°„λ‹¨ν•˜κ²Œ μž”μ•‘μ„ μ˜λ―Έν•˜λŠ” 'Balance'λΌλŠ” 값에, 2개의 μš”μ²­μ΄ λ™μ‹œμ— 듀어왔을 λ•Œ λ ˆλ””μŠ€λ₯Ό ν†΅ν•œ 뢄산락을 κ΅¬ν˜„ν•˜μ—¬ μ œμ–΄ν•΄λ³΄μž. μœ„μ˜ κ²°κ³Όμ—μ„œ μ΅œμ•…μ˜ 상황이라면 Request 1, 2번 λͺ¨λ‘ 80μ΄λΌλŠ” 값을 λ°˜ν™˜ν•˜μ—¬ μ •μƒμ μœΌλ‘œ μž”μ•‘μ΄ κ°±μ‹ λ˜μ§€ μ•Šμ„..

κ°œλ°œμΌμ§€ 2023. 10. 17. 09:23
λ™μ‹œμ„± 문제λ₯Ό ν•΄κ²°ν•΄λ³΄μž! 뢄산락 κ΅¬ν˜„ν•˜κΈ° (λ„€μž„λ“œλ½ - Named Lock ν™œμš©ν•˜κΈ°)

🌱 λ“€μ–΄κ°€κΈ° μ „ DB κ³΅λΆ€ν•˜λ‹€κ°€ 'λ„€μž„λ“œλ½'에 λŒ€ν•΄μ„œ μ•Œκ²Œ λ˜μ—ˆλŠ”λ°, λ„€μž„λ“œλ½μ„ μ‚¬μš©ν•˜λ©΄ 뢄산락을 κ΅¬ν˜„ν•  수 μžˆλ‹€λŠ” 글을 보고 ν•œ 번 ν…ŒμŠ€νŠΈν•΄λ³΄κ³  μ‹Άμ–΄μ„œ 글을 μž‘μ„±ν•΄λ³΄κ³ μž ν•œλ‹€. 전체 μ†ŒμŠ€μ½”λ“œλŠ” μ—¬κΈ°μ—μ„œ 확인 κ°€λŠ₯ν•˜λ‹€. (λ­”κ°€ ν…ŒμŠ€νŠΈμš© 레포 λ§Œλ“€κΈ° μ• λ§€ν•΄μ„œ κ·Έλƒ₯ μ•ˆ μ“°λŠ” λ ˆν¬μ—λ‹€κ°€ ν•˜λ €λ‹€ λ³΄λ‹ˆ μ½”ν‹€λ¦°μœΌλ‘œ μž‘μ„±ν•˜κ²Œ λ˜μ—ˆλ‹€.) 🌱 λΆ„μ‚°λ½μ΄λž€? λΆ„μ‚°λ½μ΄λž€ λ©€ν‹° μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œ 곡유 μžμ›μ— μ ‘κ·Όν•  λ•Œ, λ°μ΄ν„°μ˜ 정합성을 μ§€ν‚€κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” κΈ°μˆ μ΄λ‹€. μ—¬κΈ°μ„œ μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ 곡유 μžμ›μ„ μ ‘κ·Όν•˜λ©° κ²½μŸν•˜λŠ” 상황을 'Race Condition (경쟁 μƒνƒœ)'라고도 λΆ€λ₯΄λ©°, μžλ°”μ—μ„œλŠ” 'synchronized'λΌλŠ” ν‚€μ›Œλ“œλ₯Ό ν†΅ν•΄μ„œ ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œλ§Œ μ ‘κ·Όν•  수 μžˆλ„λ‘ 동기화 κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€. ν•˜μ§€λ§Œ, μŠ€ν”„λ§ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄..

κ°œλ°œμΌμ§€ 2023. 6. 23. 17:39