zip list
Redis๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ(RAM)์ ์ ์ฅํ๋ค. ๋ฉ๋ชจ๋ฆฌ๋ ๋์คํฌ์ ๋นํด ๋น์ผ ์์์ด๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๊ธฐ ์ํด zip list๋ผ๋ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ด๋ ์์ ํฌ๊ธฐ์ ๋ฌธ์์ด๋ค์ ์ ์ฅํ๋๋ฐ ์ต์ ํ๋์ด ์๋ค.
์ฃผ๋ก Redis์ List, Hash, ZSet(Sorted Set) ๋ฑ์ ๋ด๋ถ ๊ตฌํ์์ ์ฌ์ฉ๋๋ค.
๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด ์๊ณ ๋์ ํ ๋น์ด ์ด๋ ต๋ค. ๋ํ ์ค๊ฐ์ ์ฝ์ /์ญ์ ์ ๋ชจ๋ ์์์ ์ด๋์ด ํ์ํ๊ฒ ๋๋๋ฐ ์ด๋ O(N) ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๊ฒ ๋๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๊ฐ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ์ฃผ์๊ฐ์ ์ ์ฅํ๋ next/prev ํฌ์ธํฐ๊ฐ ํ์ํ๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํค๋๋ฅผ ์ฆ๊ฐ์ํค๊ณ , ๊ฐ ๋ ธ๋๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ํฉ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ์บ์ ํจ์จ์ด ๋จ์ด์ง๋ค.
zip list๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ๋ฐฐ์ด์ ํ์ฅ์ฑ๊ณผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฝ์ /์ญ์ ์ฉ์ด์ฑ์ ์ฅ์ ์ ๊ฐ์ง๋ฉด์ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ๊น์ง ๊ฐ์ถ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
๊ทธ ์ด์ ๋ ๋์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๊ณ , ํฌ์ธํฐ ๋์ ์ด์ ์ํธ๋ฆฌ์ ๊ธธ์ด๋ง ์ ์ฅํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๋ค.
zip list ์๋ฃ๊ตฌ์กฐ

zip list๋ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
๊ตฌ์กฐ๋ฅผ ๋ดค์ ๋ ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ๊ฐ๋ฅํ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐ์์ ์ผ๋ก ํ ๋นํ๋ค๊ณ ํด์ ์ ํํ ์ด๋ค ์๋ฃ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ก๋์ง ๊ถ๊ธ์ฆ์ด ์๊ฒผ๋ค.
์กฐ์ฌํ ๋ฐ๋ก๋, ์ค์ ์์ ๋ฐฐ์ด ํน์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ์๋, ๋ ๊ฐ์ง์ ์ฅ์ ์ ๊ฒฐํฉํ ํน๋ณํ ์๋ฃ๊ตฌ์กฐ๋ผ๊ณ ํ๋ค.
์ฐ์๋ ๋ธ๋ก์ ์ฌ์ฉํ์ง๋ง ๋ฐฐ์ด์ฒ๋ผ ๊ณ ์ ํฌ๊ธฐ๋ก ๋ฏธ๋ฆฌ ํ ๋นํ์ง ์๊ณ ํ์ํ ๊ฒฝ์ฐ ๋์ ์ผ๋ก ํ ๋น
๊ฐ ๋ ธ๋๋ ์ด์ /๋ค์ ์ํธ๋ฆฌ์ ๊ฑฐ๋ฆฌ๋ฅผ ํฌํจํ๊ณ ์์ด์ ์๋ฐฉํฅ ํ์์ด ๊ฐ๋ฅ
์ด๋ ๊ฒ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋จํธํ๋ฅผ ๊ฐ์ํ๊ณ ์บ์ ์ง์ญ์ฑ์ ์ด์ ์ ์ป์ ์ ์๋ค๊ณ ํ๋ค.
์ฐ์๋ ๊ฐ ๋ธ๋ก์ ํค๋(zlbytes, zltail, zllen)์ ์ํธ๋ฆฌ๋ค, ๋์ ๋ํ๋ด๋ zlend๋ก ๊ตฌ์ฑ๋๋ค.
ํค๋
zlbytes: zip list ์ด ๋ฐ์ดํธ ์
ztail: ๋ง์ง๋ง ์ํธ๋ฆฌ ์์ ์ง์ (offset)
zllen: zip list์ ์ด ์ํธ๋ฆฌ ์
zlend: zip list์ ๋์ ๋ํ๋ด๋ ๋ฐ์ดํธ
์ํธ๋ฆฌ ๊ตฌ์กฐ

prelen(previous_entry_length)
์ด์ ์ํธ๋ฆฌ ๊ธธ์ด๋ฅผ ์ ์ฅํ๊ณ ์๋ค. ์ด์ ์ํธ๋ฆฌ๋ฅผ ์ฐพ์ ๋, ํ์ฌ ์์น์ prelen ๊ฐ์ ์ฝ๊ณ ๊ทธ ํฌ๊ธฐ๋งํผ ๋ค๋ก ์ด๋ํ๋ฉด์ ์ด์ ์ํธ๋ฆฌ์ ์์ ์ ์ ๋๋ฌํ๋ค.
itself len(encoding + length):
์ํธ๋ฆฌ ์์ ์ ๊ฐ(value)์ ๊ธธ์ด๋ฅผ ๋ํ๋ด๊ณ ์๋ฐฉํฅ ํ์๊ณผ ๊ฐ ์กฐํ์ฉ์ผ๋ก ์ฌ์ฉ๋๋ค. ํ์ฌ ์ํธ๋ฆฌ์ ํ์ ๊ณผ ๊ธธ์ด ์ ๋ณด๋ฅผ ์ ์ฅํ๋๋ฐ, ์ ์๊ฐ์ ๊ฒฝ์ฐ์๋ ํน๋ณํ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ์ฌ ์ ์ฅํ๋ค๊ณ ํ๋ค.
value(actual data):
์ค์ ๋ก ์ ์ฅ๋๋ ๋ฐ์ดํฐ ๊ฐ์ด ์ ์ฅ๋๋ค. ๋ฌธ์์ด ๋๋ ์ ์ ํ์ ์ผ๋ก ์ ์ฅํ๋ค.
๋ง์ฝ ์ค์์ ๊ฒฝ์ฐ ์ซ์๋ฅผ ์ง์ ์ ์ฅํ์ง ์๋๋ค. ๊ทธ ์ด์ ๋ doubleํ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก ๋ฌธ์์ด ๊ทธ๋๋ก๋ฅผ ์ ์ฅํ๋ค.
Summary
์ผ๋ฐ์ ์ธ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ผ๋ฉด, ๊ฐ ๋ ธ๋๋ง๋ค next/prev ํฌ์ธํฐ๊ฐ ํ์ํ์ง๋ง zip list์์๋ ์ด์ ์ํธ๋ฆฌ์ ๊ธธ์ด๋ง ์ ์ฅํ๋ค. ์ด์ฒ๋ผ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์ฌ์ฉํ์ฌ ํฌ์ธํฐ๊ฐ ํ์ ์์ผ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์ ์ฝ์ ํจ์จ์ ์ด๋ค.
Reference
Last updated