π₯οΈ λ°μ΄ν°λ² μ΄μ€/Redis
[Redis] ch.16 μ μ μκ±°λ μ±μ νμ©ν΄ μ€μ΅νκΈ°(μΌλΆ)
OR15A
2024. 1. 28. 00:28
μ λ°λ―Έ Redis : κ°λ°μλ₯Ό μν Redis μλ²½ κ°μ΄λ
ch.16 - μ μ μκ±°λ μ±μ νμ©ν΄ μ€μ΅νκΈ°
- μΌλΆλΆ 건λλ
114. λμμ± λ¬Έμ μ΄ν΄νκΈ°
- μ μ°° μ κ°μ μμ²μ΄ μμ λ κ°μμ μ€νμ μμ μ²λ¦¬νλ―λ‘ μ¬λ¬λͺ μ΄ λμ°°λ°μ μ μμ
- Redisμμλ λ°μ΄ν°λ₯Ό κ°μ Έμ κ³μ° μμ μ΄λ κ²μ¦ μμ μ μνν λ€μ λ€μ Redisμ μ μ₯ν΄μΌ νλ μν©μ΄λΌλ©΄ μΈμ λ μ΄μ λΉμ·ν λμμ± λ¬Έμ κ° λ°μν μ μμ
- λ°μ΄ν°λ₯Ό κ°μ Έμ€λ μμ κ³Ό Redisμ λ€μ μ μ₯ λ° μ λ°μ΄νΈνλ μμ μ¬μ΄μ λ€λ₯Έ μμ² λλ λ€λ₯Έ νλ‘μΈμ€κ° λμΌν μμ μ μνν μ μκΈ° λλ¬Έμ λ€λ₯Έ νλ‘μΈμ€μ μΆ©λμ΄ μΌμ΄λ μ μμ΄μ
- μΈμ λ μ§ λ°μ΄ν°λ₯Ό μ½μ΄μ€κ³ + 무μΈκ°λ₯Ό μ²λ¦¬ν λ€μ + λ€μ μ μ₯ λ° μ λ°μ΄νΈν λ => λμμ± λ¬Έμ κ° λ°μν κ°λ₯μ± μμ!!!
- λμμ± λ¬Έμ λ₯Ό μ§μ§ λ¬Έμ λ‘ λ³Ό κ±΄μ§ μλμ§λ μ ν리μΌμ΄μ
κ·μΉμ λ°λΌ λ¬λΌμ§
- ex)
- Todo Listμμ 'μμ', 'μλ£' μμ²μ΄ κ²ΉμΉλ κ²½μ° -> ν°λ¬Έμ μλ. λ§μ§λ§ μ λ³΄λ‘ μ λ°μ΄νΈ νκ±°λ κΆνμ μ΄μ©ν μμμ
- λμ°° λ± λκ΄λ ¨ μ€μν λ¬Έμ μμλ μ‘°μ¬ν΄μΌν¨
- λμμ± λ¬Έμ ν΄κ²°λ°©λ² 4κ°μ§
- 2κ°μ§λ μ΄λ² μ±ν°μμ, λλ¨Έμ§λ νλ°μ μ€λͺ
- [1] μλ μ λ°μ΄νΈ commeand μ¬μ©νκΈ° (HINCRBY or HSETNX)
- [2] WATCH λͺ λ Ήμ΄λ‘ νΈλμ μ μ¬μ©νκΈ°
- [3] λ½ μ΄μ©νκΈ°
- [4] LUA μ λ°μ΄νΈ μ€ν¬λ¦½νΈλ₯Ό 컀μ€ν νκΈ°
μμμ μ λ°μ΄ν° μ μ©νκΈ°
- λμμ± λ¬Έμ μ μμΈ
- λ°μ΄ν°λ₯Ό μ½κ³ μ°λ μ¬μ΄μ μκ° μ°¨κ° μ‘΄μ¬νκΈ° λλ¬Έ
- λ°λ‘ μ΄ μκ° λμ λ€λ₯Έ μμ²μ΄ μλ²λ‘ λ€μ΄μμ νμ¬ μ½κ³ μλ λ°μ΄ν°λ₯Ό μ λ°μ΄νΈν μ μκΈ° λλ¬Έμ
- νΉμ λͺ λ Ήμ΄λ₯Ό μ΄μ©νλ©΄ λ°μ΄ν°λ₯Ό μ½μ΄μ€μ§ μκ³ νμ¬ κ°μ μ¬μ©ν΄ μ μ리μμ μ λ°μ΄νΈ ν μ μμ
- ν΄κ²°νλ λ°©λ² μ€ νλλ inStockμ μ΄κΉκ°μ νμΈνλ λ¨κ³λ₯Ό μλ΅νλκ² = μ½λ λ¨κ³λ₯Ό μ λΆ μλ΅νκ³ λ°λ‘ μ°λ λ¨κ³λ‘ λμ΄κ°κΈ°
- μ΄λ κ² νλ €λ©΄ βHINCRBYβ λͺ λ Ήμ΄λ₯Ό μ°κΈ° (ν΄μμ λν΄ μ€λͺ ν λ λ€λ€μ)
- μ°λ λμλ§ μννλ©°, μ½λ λμμ μννμ§ μμ
- ex) μ΄λ²μλ μ°¨λ μμμ κΈ°λ‘νκΈ° + ν κ°μ§ μꡬμ¬ν(μμ§ μμμ΄ μ§μ λμ§ μμ μ°¨λμ λν΄μλ§ μμμ μ§μ ν΄μΌν¨)
- 'HSETNX'λ₯Ό μ¬μ©νκΈ° (HSETNX λͺ λ Ήμ΄λ νλ‘νΌν°κ° μ€μ λμ§ μλ κ²½μ°μ νν΄ κ°μ μ€μ ν¨)
- HINCRBY, HSETNX λͺ
λ Ήμ΄μ ν΅μ¬
- μ΄λ₯Ό μ¬μ©ν΄ μ½κ³ μ°λ λμ μ¬μ΄μ μκ° μ°¨λ₯Ό μλ²½ν μ κ±°ν μ μμ
- λλ μΌμ κΈ°μ€μ λ§μ‘±νλ κ²½μ°μλ§ μ λ°μ΄νΈλ₯Ό μννκ²ν μ μμ
- νμ§λ§ λλΆλΆμ κ²½μ°μλ μ΄ λͺ
λ Ήμ΄λ§μΌλ‘ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ
- μ μ°° λ°μ΄ν° μμ±μ HSETλΏλ§ μλλΌ RPUSHλ μ¬μ©ν¨
- λν 리μ€νΈ μ²λ¦¬μ HSETNX κ°μ λͺ λ Ήμ΄λ ν° λμμ΄ λμ§ μμ
- κ·Έλμ νΈλμμ μ΄ νμν¨
νΈλμμ
- μ¬λ¬ κ°μ λͺ λ Ήμ κ·Έλ£ΉμΌλ‘ λ¬Άμ΄ μμ°¨μ μΌλ‘ μ€νλ μ μλλ‘ λ³΄μ₯ν΄μ€
- Redisμμλ νΈλμμ λ‘€λ°±κ³Ό μ·¨μλ ν μ μμ(κ·Έλμ λ€λ₯Έ λ°μ΄ν°λ² μ΄μ€μ λΉν΄ νΈλμμ μ νμ©λκ° λ¨μ΄μ§)
- MULTI
- Redisμκ² κ³§ μ¬λ¬ κ°μ λͺ λ Ήμ΄λ₯Ό λ³΄λΌ κ±°κ³ , λ°λ‘ μ€ννμ§λ μμ κ±°λΌλ λ»
- μ‘°κΈ κΈ°λ€λ Έλ€κ° λμ€μ μ°¨λ‘λλ‘ μ€νν λ μ¬μ©ν¨
- MULTIλ₯Ό μ¬μ©ν΄μ νΈλμμ μ μμν λ€μμλ, μ€μ λ‘ μ€νν λͺ λ Ήμ΄λ€μ μ μ‘ν¨
- βQUEUEDβλΌλ λ©μΈμ§ : λͺ λ Ήμ΄κ° λκΈ°μ΄μ μΆκ°λμ΄ μ€νμ κΈ°λ€λ¦¬κ³ μμμ μλ―Έν¨
- EXEC
- μ€νν λͺ λ Ήμ΄λ€μ μ€μ λ‘ μ€ννκ² ν¨
νΈλμμ μΌλ‘ ν€ κ°μνκΈ°
- WATCH
- Redisκ° νΉμ ν€μ μ μ₯λ κ°μ μ§μΌλ³΄λλ‘ μ§μν¨
- λ€μ νΈλμμ μ΄ μ€νλκΈ° μ μ μ§μΌλ³΄λ κ°μ΄ λ³κ²½λλ©΄, ν΄λΉ νΈλμμ μ μλμΌλ‘ μ€ν¨ν¨
- μ§μΌλ³΄λ ν€κ° λ³κ²½λμλ€λ©΄ EXECλ₯Ό νΈμΆνλ μκ° nullμ΄ λ°νλ¨
- Redisμμ κ°μ μ½μ΄μ¨ λ€μ, μ μ μκ°μ λ€μ¬ μ²λ¦¬ μμ μ μ§ννκ³ , λ€μ μ°κΈ° μμ μ μ€ννλ κ²½μ°μλ μΌλ ¨μ κ³Όμ μ λͺ¨λ νΈλμμ μΌλ‘ κ°μΈμ£Όκ³ , WATCH λͺ λ Ήμ΄λ₯Ό μ¬μ©νκΈ°
- WATCH ν€μλμμ μμ£Ό λ³Ό μ μλ μ νμ μΈ μ¬μ© ν¨ν΄ μμλκΈ°
νΈλμμ μ© μ°κ²° λΆλ¦¬
- μμ£Ό μ¬μ©λλ ν¨ν΄
- WATCH => λ°μ΄ν° κ°μ Έμ€κΈ° => νΈλμμ
μ€ν
- WATCH μ€ν
- GET, HGETALL λ±μ λͺ λ Ήμ΄λ‘ Redisμμ λ°μ΄ν° κ°μ Έμ€κΈ°
- λ°μ΄ν° μ²λ¦¬νκΈ°
- MULTI, SET, EXECλ‘ νΈλμμ μ ꡬμ±νκΈ°
- WATCH => λ°μ΄ν° κ°μ Έμ€κΈ° => νΈλμμ
μ€ν
- μ£Όμμ
- νΈλμμ μ μ¬μ©νλ©΄ WATCHλ MULTIν€μλλ₯Ό νΈμΆν λλ§λ€ Redisκ³Όμ μ°κ²°μ μμ ν μ μ νκ²λ¨
- ν΄λΉ μ°κ²°μ μ΄ νΈλμμ λ§ μ¬μ©ν μ μκ² λκ³ , λ€λ₯Έλ°μλ μ¬μ©ν μ μμ
νΈλμμ μΌλ‘ μ€λ³΅ μ μ°° λ¬Έμ ν΄κ²°νκΈ°
- νκΈ°
- νκΈ°
- νκΈ°
- νκΈ°
- νκΈ°
κ°κ²©μ μ λ ¬ & ν¨μ ꡬν
- νκΈ°
- νκΈ°
- νκΈ°
- νκΈ°
- νκΈ°