๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/Redis

[Redis] ch.15 ๋ฆฌ์ŠคํŠธ์— ๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๊ธฐ

by OR15A 2024. 1. 27.

https://github.com/HongHyeongJu/StudySpace/blob/main/database/Redis/Redis_%ED%95%99%EC%8A%B5%EB%85%B8%ED%8A%B8_03.md

์œ ๋ฐ๋ฏธ Redis : ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Redis ์™„๋ฒฝ ๊ฐ€์ด๋“œ

ch.15 - ๋ฆฌ์ŠคํŠธ์— ๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๊ธฐ



๋ฆฌ์ŠคํŠธ

  • ๋‹จ์ ๋ถ€ํ„ฐ ์•Œ๊ธฐ
    • ์ œ๋Œ€๋กœ ์“ฐ์ง€ ์•Š์œผ๋ฉด ์„ฑ๋Šฅ์ด ์•ˆ์ข‹์Œ
  • ์‚ฌ์šฉ์ฒ˜
    • ๋ฆฌ์ŠคํŠธ๋Š” ๋ฌธ์ž์—ด์„ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๊ธฐ
  • ์ฃผ์˜์ 
    • ๋ฆฌ์ŠคํŠธ๋Š” ๋ฐฐ์—ด์ด ์•„๋‹˜. ๋ณดํ†ต์˜ ๋ฐฐ์—ด๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„๋จ
    • ์‚ฌ์‹ค์€ ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„๋จ
  • ๋ฆฌ์ŠคํŠธ๊ฐ€ ํ”ํžˆ ์‚ฌ์šฉ๋˜๋Š” ๊ณณ์€ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ
    • ex) ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ ๊ธฐ๋กํ•˜๋Š” ๊ธฐ์˜จ
    • ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ์œ ์šฉํ•จ (์ œ์ผ ๋์ด๋‚˜ ์ œ์ผ ์•ž์— ์ถ”๊ฐ€ํ•  ๋•Œ)
    • ์ด ํ•ญ๋ชฉ๋“ค์„ ์ „๋ถ€ ์ˆœํšŒํ•˜๋ ค๊ณ  ํ•  ๋•Œ๋‚˜, ๊ฐ€์žฅ ์ค‘์•™์— ์žˆ๋Š” ํ•ญ๋ชฉ์— ์ ‘๊ทผํ•  ๋•Œ ๋ฌธ์ œ์ƒํ™ฉ์— ๋‹น๋ฉดํ•จ
  • Redis ๋ช…๋ น์–ด => ์š”์ฆ˜ ์ž˜ ์“ฐ์ง€ ์•Š์Œ, ๋˜ํ•œ Redis์— ์ƒˆ ์ž๋ฃŒํ˜•์ด๋‚˜ ๋ช…๋ น์–ด๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉฐ ๋”์šฑ ์•ˆ์“ฐ์ด๊ฒŒ๋จ

๋ฌด์šฉํ•œ.. ๋ฆฌ์ŠคํŠธ ๋ช…๋ น์–ด

  • LPUSH
    • ๋ฆฌ์ŠคํŠธ์˜ ์™ผ์ชฝ์— ํ•ญ๋ชฉ ์ถ”๊ฐ€
    • LPUSH temps 25
  • RPUSH
    • ๋ฆฌ์ŠคํŠธ์˜ ์˜ค๋ฅธ์— ํ•ญ๋ชฉ ์ถ”๊ฐ€
  • LLEN
    • list Length๋ฅผ ์˜๋ฏธํ•จ
    • ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ํ•ญ๋ชฉ ๊ฐœ์ˆ˜๋ฅผ ์•Œ๋ ค์คŒ
  • LINDEX
    • ๋ช…์‹œ๋œ ์ธ๋ฑ์Šค์— ์ €์žฅ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ
    • ์Œ์ˆ˜ ๋ช…์‹œํ•˜๋ฉด ๋ฆฌ์ŠคํŠธ์˜ ์ œ์ผ ๋์œผ๋กœ ๊ฐ
    • -1 -> ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ ์กฐํšŒํ•˜๊ธฐ
    • ์Œ์ˆ˜ ๊ฐ’์„ ๋” ์•„๋ž˜๋กœ ๋‚ด๋ฆฌ๋ฉด ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰์—์„œ ๋’ท๊ฑธ์Œ์งˆ ํ•˜๋Š” ๊ฒƒ
  • ํ•„๊ธฐ

๋ฒ”์œ„์™€ ๊ฒ€์ƒ‰

  • LRANGE
    • ๋ฆฌ์ŠคํŠธ์— ๋ช…์‹œ๋œ ๋ฒ”์œ„์˜ ํ•ญ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•จ(์ธ๋ฑ์Šค๋กœ ์กฐํšŒ)
    • ๋ฆฌ์ŠคํŠธ ๊ฐœ์ˆ˜๋ณด๋‹ค ํฐ ์ˆ˜ ๋„ฃ์–ด๋„ ๊ดœ์ฐฎ์Œ
    • ์Œ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Œ
  • LPOS
    • ํ•ด๋‹น ๊ฐ’์ด ์กด์žฌ ์‹œ ํ•ด๋‹น ๊ฐ’์ด ์–ด๋”” ์žˆ๋Š”์ง€ ์ธ๋ฑ์Šค๋ฅผ ์•Œ๋ ค์คŒ
    • LPOS key element [RANK rank] [COUNT count] [MAXLEN len]
    • ๋ฆฌ์ŠคํŠธ์— ์—†๋Š” ๊ฐ’์„ ์กฐํšŒํ–ˆ์„ ๋•Œ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฑด null => nil์ด๋ผ๋Š” ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ ํ•จ
    • ์˜ต์…˜
      • RANK
        • ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ์€ ๊ณ ์œ ํ•˜๋‹ค๋Š” ๋ณด์žฅ์ด ์—†์Œ(์ค‘๋ณต ํ—ˆ์šฉ)
        • LPOS๋ฅผ ํ•  ๋•Œ ๊ฐ™์€ ๊ฐ’ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ๊ฐ™์€ ๊ฐ’์€ ๋ฌด์‹œํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ RANK๋ฅผ ์‚ฌ์šฉํ•จ
        • ex) RANK๋Š” ๋Œ€์ƒ ๊ฐ’์˜ ์ฒซ ๋ฒˆ์งธ๋‚˜ ๋‘ ๋ฒˆ์งธ๋‚˜ ์„ธ ๋ฒˆ์งธ ๊ฑฐ๋ฅผ ๋ฌด์‹œํ•˜๋ผ๊ณ  ํ•˜๊ธฐ
        • LPOS temps 25 RANK 2 ๋‘๋ฒˆ์งธ๋กœ ๋“ฑ์žฅํ•˜๋Š” ๊ฒƒ์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ธฐ
      • COUNT
        • ์ธ๋ฑ์Šค ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•จ
        • LPOS temps 25 COUNT 2 => ๊ฐ 25๊ฐ€ ์œ„์น˜ํ•œ ์ธ๋ฑ์Šค ์ •๋ณด๋ฅผ ์•Œ๊ณ ์‹ถ์„ ๋•Œ
      • MAXLEN
        • ๋ฐ์ดํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— MAXLEN์„ ๋ช…์‹œํ•ด์„œ ๊ฒ€์ƒ‰ ๊นŠ์ด๋ฅผ ์ œํ•œ
        • LPOS temps 25 MAXLEN 10 => ์ฒซ 10๊ฐœ ํ•ญ๋ชฉ๋งŒ ๋ณด๊ธฐ
          • ex) temps๋Š” [1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 1] / LPOS temps 2 MAXLEN 8
          • MAXLEN 8 ์˜ต์…˜์€ ๋ฆฌ์ŠคํŠธ์˜ ์ฒ˜์Œ 5๊ฐœ ์š”์†Œ๋งŒ ๊ฒ€์ƒ‰ํ•˜๋„๋ก ์ œํ•œํ•˜๋ฏ€๋กœ ๊ฒ€์ƒ‰ ๋ฒ”์œ„๋Š” [1, 2, 1, 1, 2, 1, 1, 2]
          • ๋ฐ˜ํ™˜๋˜๋Š” ์ธ๋ฑ์Šค 2
          • COUNT ์˜ต์…˜์„ ์ƒ๋žตํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•œ ๊ฐœ์˜ ์ธ๋ฑ์Šค๋งŒ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
          • LPOS temps 2 MAXLEN 8 COUNT 3 ์ด ๋ช…๋ น์–ด์˜ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ์ธ๋ฑ์Šค๋Š” [1, 4, 7]
  • nil
    • Redis์—์„œ '๊ฐ’์ด ์—†์Œ' ๋˜๋Š” '์กด์žฌํ•˜์ง€ ์•Š์Œ'์„ ๋‚˜ํƒ€๋‚ด๋Š” ํŠน๋ณ„ํ•œ ํ‚ค์›Œ๋“œ
    • ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” null์ด๋‚˜ None๊ณผ ์œ ์‚ฌํ•œ ๊ฐœ๋…

๋ฆฌ์ŠคํŠธ ์ž๋ฅด๊ธฐ

  • LPOP
    • ๋ฆฌ์ŠคํŠธ์˜ ์™ผ์ชฝ ์ฆ‰ ์‹œ์ž‘์ ์„ ๊ธฐ์ค€์œผ๋กœ ํ•ญ๋ชฉ์„ ์ œ๊ฑฐํ•จ
    • LPOP์„ ํ‚ค ๊ฐ’์ด๋ž‘๋งŒ ์‹คํ–‰์‹œํ‚ค๋ฉด ์ œ์ผ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์ด ์ œ๊ฑฐ๋จ
    • ์ˆซ์ž๋ฅผ ๋ช…์‹œํ•œ ๋งŒํผ ํ•ญ๋ชฉ์ด ์ œ๊ฑฐ๋จ
    • LPOP temps 2 => ์ฒ˜์Œ 2๊ฐœ ํ•ญ๋ชฉ์„ ์ œ๊ฑฐํ•จ
  • RPOP
    • ๋ฆฌ์ŠคํŠธ์˜ ์˜ค๋ฅธ์ชฝ(๋งˆ์ง€๋ง‰)์„ ๊ธฐ์ค€์œผ๋กœ ํ•ญ๋ชฉ์„ ์ œ๊ฑฐํ•จ
  • LSET
    • ๋ช…์‹œ๋œ ์œ„์น˜์— ์žˆ๋Š” ํ•ญ๋ชฉ์˜ ๊ฐ’์„ ์ฃผ์–ด์ง„ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ”์คŒ
    • LSET temps 2 32๋ฅผ ํ•˜๋ฉด ์ธ๋ฑ์Šค 2 ์œ„์น˜์— ์žˆ๋Š” ํ•ญ๋ชฉ์˜ ๊ฐ’์„ 32๋กœ ๋ฐ”๊ฟ”์คŒ
  • LTRIM
    • ์ด ๋ช…๋ น์–ด์— ๋ช…์‹œ๋œ ๋ฒ”์œ„์— ์žˆ๋Š” ํ•ญ๋ชฉ์€ ๋‘๊ณ  ๋‚˜๋จธ์ง€๋ฅผ ์ œ๊ฑฐํ•จ
    • LTRIM์„ ์‹คํ–‰์€ ๋งค์šฐ ์กฐ์‹ฌํ•ด์•ผํ•จ!! ์™œ๋ƒ๋ฉด ๋„ˆ๋ฌด๋‚˜ ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ง๊ฐ€๋œจ๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ

ํ•ญ๋ชฉ ์ œ๊ฑฐํ•˜๊ธฐ

  • LINSERT
    • ๋ฆฌ์ŠคํŠธ์— ์ƒˆ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ (๊ธฐ์กด ํ•ญ๋ชฉ์„ ์ฐพ์•„์„œ ๊ทธ ํ•ญ๋ชฉ์˜ ์•ž์ด๋‚˜ ๋’ค์— ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๊ฒŒ ํ•ด์คŒ)
    • LINSERT temps BEFORE 30 15
    • LINSERT temps AFTER 30 15
  • LREM
    • ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ ์ผ๋ถ€๋ฅผ ์ œ๊ฑฐํ•˜๊ฒŒ ํ•ด์คŒ
    • 2๋ฒˆ์งธ๋กœ ๋ช…์‹œํ•˜๋Š” ์˜ต์…˜๊ฐ’์ด ๋น„๊ต์  ๋ณต์žกํ•จ
    • LREM temps -2 25
      • 2๋ฒˆ์งธ ์˜ต์…˜๊ฐ’
        • ex) -2 : ์Œ์ˆ˜(์‹œ์ž‘์ ์ด ์˜ค๋ฅธ์ชฝ, ์ด๋™๋ฐฉํ–ฅ์€ ์™ผ์ชฝ)
      • ๋งจ ์˜ค๋ฅธ์ชฝ ๋์ด ์‹œ์ž‘์ , ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋˜ 25๊ฐ€ ๊ฐ’์ธ ํ•ญ๋ชฉ ๋‘ ๊ฐœ๋ฅผ ์ œ๊ฑฐ
  • ํ•„๊ธฐ

๋ฆฌ์ŠคํŠธ ์œ ์Šค์ผ€์ด์Šค

  • ๋ฆฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์จ์•ผ ํ•˜๋Š” ์ƒํ™ฉ
    • ๋ณดํ†ต Sorted set๊ฐ€ ์ ํ•ฉํ•œ ์ƒํ™ฉ์ด ๋” ๋งŽ์„ ๊ฒƒ, ํ•˜์ง€๋งŒ ๊ฐ€๋”์€ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ ํ•ฉํ•  ์ˆ˜ ์žˆ์Œ
    • ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋์ด๋‚˜ ์•ž์— ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•  ๋•Œ
    • ์ง€์†์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€๋งŒ ํ•˜๋Š” ๊ทธ๋Ÿฐ ์ƒํ™ฉ
    • ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ์˜ ๋งˆ์ง€๋ง‰์ด๋‚˜ ๋งˆ์ง€๋ง‰ ๋ช‡ ๊ฐœ ๊ธฐ๋ก๋งŒ ์กฐํšŒํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค
  • ์–ธ์ œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”์ง€ ์•„๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•จ!
    • ๋ฆฌ์ŠคํŠธ์— ํ•ญ๋ชฉ์ด ๋งŽ๋‹ค๋ฉด ๋ฆฌ์ŠคํŠธ๋ฅผ ์•ˆ ์“ฐ๋Š” ๊ฒŒ ์ข‹์Œ
    • ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ ์กฐํšŒ ์‹œ ํ•„ํ„ฐ ์กฐ๊ฑด์„ ์ ์šฉ์ด ํ•„์š”ํ• ๋•Œ๋„ ์•ˆ ์“ฐ๋Š”๊ฒŒ ์ข‹์Œ
    • ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜๋Š” ๊ธฐ์ค€์ด ์‹œ๊ฐ„์ด๋‚˜ ์‚ฝ์ž…๋œ ์ˆœ์ด ์•„๋‹ ๋•Œ
  • ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ ํ•ฉํ•œ ๊ณณ
    • ๋ˆ„์  ๋ฐ์ดํ„ฐ ๊ธฐ๋ก์‹œ ๋ฌธ์ž์—ด ๊ฐ๊ฐ ์•ˆ์— ๊ฐ’์„ ์ผ์ข…์˜ ์Šคํ‚ค๋งˆ์ฒ˜๋Ÿผ ์ธ์ฝ”๋”ฉํ•ด ๋„ฃ์œผ๋ฉด ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ๋‹ค ๊พธ๊ฒจ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ..ใ…‹
    • ์ž…์ฐฐ ๊ธฐ๋ก ๋ˆ„์ ํ•˜๊ธฐ
    • ๋ฆฌ์ŠคํŠธ์—๋Š” ์ง๋ ฌํ™”๋œ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๊ธฐ
    • ์ œํ’ˆ์˜ ์ž…์ฐฐ ๊ฐ€๊ฒฉ : ์œ ๋‹‰์Šค ํƒ€์ž„์Šคํƒฌํ”„
    • ์ด ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์ž…์ฐฐ๊ฐ€๋ž‘ ์ž…์ฐฐ๋œ ์‹œ๊ฐ„์„ ์•Œ ์ˆ˜ ์žˆ์Œ
    • ์ฆ‰ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑํ•ด์„œ ์ด ๊ฐ’๋“ค, ์ฆ‰ ์ˆซ์ž, ์ฝœ๋ก , ์ˆซ์ž๋กœ ๋ผ ์žˆ๋Š” ์ด๊ฑธ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด์ค˜์•ผํ•จ

์ง๋ ฌํ™”์™€ ์—ญ์ง๋ ฌํ™”

  • ๋‚˜์ค‘์— ๋‹ค์‹œ ๋“ฃ๊ธฐ