์๋ ํ์ธ์, ์ผ์ด์น์ ๋๋ค.
์ง๋ ๋ ๋์ค ๋ฐ์ดํ ํ์ ํฌ์คํ ์ ๋ณด์ จ๋ค๋ฉด ์์๊ฒ ์ง๋ง ๋ ๋์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ฏ ๊ฐ์ง์ ๋ฐ์ดํ ํ์ ์ ์ง์ํฉ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ ๋ ๋์ค ๋ฐ์ดํ ํ์ ๋ณ ๋ช ๋ น์ด ๋ชฉ๋ก ๋ฐ ๊ธฐ๋ฅ ์ 1ํธ์ผ๋ก ์คํธ๋ง ํ์ ์ ๋ํ ์ค๋ช ์ ํ๋ คํฉ๋๋ค.
Redis Strings
๋ ๋์ค ์คํธ๋ง ํ์ ์ ์ ์ผ ๊ธฐ๋ณธ์ ์ธ ํ์ ์ ๋๋ค. Memcached์ ์ ์ผํ ๋ฐ์ดํฐ ํ์ ์ธ ์คํธ๋ง์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋ ๋์ค๋ฅผ ์๋ก ๋ฐฐ์ฐ๋ ์ฌ๋๋ค์๊ฒ๋ ์ด๋ ต์ง ์์ฃ . ๋ญ ์คํธ๋ง์ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์๋ค์ด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ํ์ ์ค์ ํ๋๋๊น์.
๋ ๋์ค์ ํค๊ฐ ๋ฐ๋ก ์คํธ๋ง์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์คํธ๋ง ํ์ ์ผ๋ก ์ ์ฅํ๋ค๋ ๊ฒ์ ํ๋์ ์คํธ๋ง์ ๋๋ค๋ฅธ ์คํธ๋ง์ ๋งคํํ๋ค๋ ์๋ฏธ์ ๋๋ค. ์คํธ๋ง ๋ฐ์ดํ ํ์ ์ ์ ๋ง ๋ง์ ์ฉ๋๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์๋ฅผ๋ค์ด HTML ์ผ๋ถ๋ ํ์ด์ง ์ ์ฒด๋ฅผ ์บ์ฑํ ์๋ ์์ฃ .
์คํธ๋ง ํ์ ์ ๋ค๋ฃจ๋ ์์ ๋ฅผ ํ๋ฒ ๋ณด๋ฉด์ ๋ ์์๋ณด๋๋ก ํ์ฃ .
๋ ๋์ค ํ๋กฌํํธ ์ฐฝ์์ ์๋์ฒ๋ผ ์ ๋ ฅํด๋ณด์ธ์.
> set mykey somevalue
OK
> get mykey
"somevalue"
์ ์์ ๋ SET ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ mykey๋ผ๋ ํค์ somevalue๋ผ๋ ๊ฐ์ ๋งคํ์ํต๋๋ค. ์ฌ๊ธฐ์ ์ค์ํ ์ ์ SET ๋ช ๋ น์ด๋ ๋์ผํ ํค๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ค๋ฉด ๊ทธ ํค์ ํด๋นํ๋ ๊ฐ์ ๋ฎ์ด์ด๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ ๊ฐ์ด ์ด๋ค ํ์ ์ด๋๋ ์๊ด์์ด ๋ฌด์กฐ๊ฑด ๋ฎ์ด์ฐ๋ ์ฃผ์ํ์๊ธฐ ๋ฐ๋๋๋ค. ๋ค์๋งํ๋ฉด SET ๋ช ๋ น์ด๋ ์๋ฐ ํ๋ก๊ทธ๋๋ฐ์ = ๊ณผ ๊ฐ์ด ํน์ ํค์ ํน์ ๊ฐ์ ํ ๋นํด์ฃผ๋ ๊ธฐ๋ฅ์ ํฉ๋๋ค.
ํค์ ํ ๋นํ ์ ์๋ ๊ฐ์ ์ด๋ ํ ์คํธ๋ง์ด๋ผ๋ ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํ ์ญ์ ๊ฐ๋ฅํ์ฃ . JPEG ์ด๋ฏธ์ง์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํ๋ ์ ์ฅ์ด ๊ฐ๋ฅํฉ๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์ ๋ ์ค์ํ ์ ์ด ์์ต๋๋ค. ์ด๋ค ๊ฐ์ด๋ ๊ทธ ํฌ๊ธฐ๊ฐ 512MB๋ฅผ ๋์ ์๋ ์๋ค๋ ๊ฒ์ด์ฃ .
SET ๋ช ๋ น์ด์ ์ต์ ์ ์ค ์๋ ์์ต๋๋ค. ์๋ฅผ๋ค์ด ์ด๋ฏธ ํด๋น ํค๊ฐ ์กด์ฌํ๋ฉด ์คํจํ๋๋ก ํ ์๋ ์๊ณ ๊ทธ ๋ฐ๋๋ก ์ด๋ฏธ ํค๊ฐ ์กด์ฌํ ๋์๋ง SETํ๋๋ก ํ ์๋ ์์ต๋๋ค. ์๋์ ๊ฐ์ด ๋ง์ด์ฃ .
> set mykey newval nx
(nil)
> set mykey newval xx
OK
์คํธ๋ง์ด ๋ ๋์ค์ ์ ๋ง ๊ธฐ๋ณธ์ ์ธ ๊ฐ์ ๋ํ๋ด๋ ๋ฐ์ดํฐ ํ์์ด์ง๋ง ์ฌ๋ฌ ์ค์ฉ์ ์ธ ๊ธฐ๋ฅ๋ค์ด ์์ต๋๋ค. atomic increment ๊ฐ ๊ทธ ํ ์์ ๋๋ค. atomic increment๊ฐ ๋ญ์ง ์ ๋ชจ๋ฅด์ ๋ค๋ฉด atomic์ด ๋ญ ์๋ฏธํ๋์ง ์ฐพ์๋ณด์๋ฉด ๋ ๊ฒ๋๋ค. ์ฌ๊ธฐ์ ๊ทธ์ ๋ํ ์ค๋ช ์ ํ์ง ์๊ฒ ์ต๋๋ค.
> set counter 100
OK
> incr counter
(integer) 101
> incr counter
(integer) 102
> incrby counter 50
(integer) 152
INCR ๋ช ๋ น์ด๋ ์คํธ๋ง์ผ๋ก ์ ์ฅ๋ ๊ฐ์ ์ซ์ํํ๋ก ๋ณํํ ๋ค 1์ ์ฆ๊ฐ์ํต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๊ฒ ์ฆ๊ฐ๋ ๊ฐ์ ๋ค์ ์คํธ๋ง ํํ๋ก ์ ์ฅํฉ๋๋ค. ์ด์ ๋น์ทํ๊ฒ INCRBY, DECR ๊ทธ๋ฆฌ๊ณ DECRBY ์ ๊ฐ์ ๋ช ๋ น์ด๋ค์ ๋ ๋์ค๋ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ์ด ๋ช ๋ น์ด๋ค์ ๋ด๋ถ์ ์ผ๋ก ๋ชจ๋ ๋์ผํ๊ฒ ๋์ํฉ๋๋ค. ์์ฃผ ๋ฏธ๋ฌํ ์ฐจ์ด๋ง ์์ ๋ฟ์ด์ฃ .
INCR ๊ฐ atomic์ด๋ผ๋๊ฒ ๋ฌด์จ ์๋ฏธ๋๊ตฌ์? ์ฌ๋ฌ๋ช ์ ์ฌ์ฉ์๊ฐ ๋์ผํ ํค์ ๋ํด์ INCR๋ช ๋ น์ด๋ฅผ ์์ฒญํ๋ค๊ณ ํ์ ๋, ์์ฒญํ ์ฌ์ฉ์๋ค์ด ์ ๋๋ก race condition์ ๋น ์ง ์ ์๋ค๋ผ๋ ์๋ฏธ์ ๋๋ค. ์ฆ, ์ฌ์ฉ์ 1 ์ด 10์ด๋ผ๋ ๊ฐ์ ์ฝ๊ณ , ์ฌ์ฉ์ 2 ์ญ์ ๋์ผํ ํค์ ๋ํด์ 10์ด๋ผ๋ ๊ฐ์ ์ฝ์ ๋ค ๋ ์ฌ์ฉ์๊ฐ 1์ฉ ๊ฐ์ ์ฆ๊ฐ์์ผฐ์ ๋ ์ต์ข ๊ฒฐ๊ณผ๊ฐ 11์ด ๋ ์ ์๋ค๋ ๊ฒ์ด์ฃ . ์ต์ข ๊ฒฐ๊ณผ๋ ํญ์ ๋ฌด์กฐ๊ฑด ์ ๋๋ก 12 ๊ฐ ๋๋ค๋ ๊ฒ์ ๋ ๋์ค๋ ๋ณด์ฅํด์ฃผ๊ณ ์์ต๋๋ค. ์ฝ๊ฒ๋งํ๋ฉด ๊ฐ์ ์ฝ๊ณ , 1 ์ฆ๊ฐํ๊ณ , ๋ค์ ์ ์ฅํ๋ ๊ณผ์ ์ด ๋ชจ๋ ํ๋ช ์ ์ฌ์ฉ์๊ฐ ์์ฒญํ์ ๋ ์ด๋ฃจ์ด์ง๊ณ ๊ทธ ์ฌ์ด์ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ผ์ด๋ค ์ ์๋ค๋ ๋ง์ด์ฃ .
์ด ์ธ์๋ ์คํธ๋ง์ ๋ค๋ฃจ๊ธฐ ์ํ ์ฌ๋ฌ ๋ช ๋ น์ด๋ค์ด ์์ต๋๋ค. GETSET ๋ช ๋ น์ด๋ ํค์ ์กด์ฌํ๋ ๊ฐ์ ์ฝ๊ณ ์๋ก์ด ๊ฐ์ ์ธํ ํ๋ค ์ฝ์ด๋ค์ธ ๊ธฐ์กด๊ฐ์ ๋ฐํํฉ๋๋ค. ์ด ๋ช ๋ น์ด๋ ๋ฐฉ๋ฌธ์์๋ฅผ ๊ธฐ๋กํ ๋ ์ฌ์ฉํ ์ ์๊ฒ ์ฃ . ์ผ๋ณ๋ก ๋ฐฉ๋ฌธ์์๋ฅผ ๊ธฐ๋ก์ ํด์ผํ๋ค๋ฉด ์์ ์ด ๋์์ ๋ GETSET ๋ช ๋ น์ด๋ก ์ค๋ ๋ฐฉ๋ฌธ์์๋ฅผ ์ฝ์ด์ค๊ณ 0์ผ๋ก ์ธํ ํด์ฃผ๋ฉด ๋๋๊ฑฐ์ฃ .
์ฌ๋ฌ๊ฐ์ ํค-๊ฐ ํ์ด๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์กฐํํ๊ณ ์ถ์ ๋์๋ MSET ์ MGET ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
> mset a 10 b 20 c 30
OK
> mget a b c
1) "10"
2) "20"
3) "30"
MSET์ ํ๋ฒ์ ์ฌ๋ฌ ํค-๊ฐ ํ์ด๋ฅผ ์ ์ฅํ๋ ๋ช ๋ น์ด์ด๊ณ
MGET ์ ๊ฐ์ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
Altering and querying the key space ( ํค ๋ณ๊ฒฝ, ์กฐํ, ์ญ์ ํ๊ธฐ )
๋ ๋์ค๋ ํค์ ๊ด๋ จ๋ ์ฌ๋ฌ ๋ช ๋ น์ด๋ค์ ์ ๊ณตํฉ๋๋ค. ํค ์ด๋ฆ ๋ณ๊ฒฝ( ์ด๊ฒ์ ์์์ ๋ณด์ จ์ฃ ? ), ํค ๋ชฉ๋ก ์กฐํ ๋ฐ ์กด์ฌ์ฌ๋ถ ํ์ , ๋๋ ์ญ์ ํ๊ธฐ์ ๊ฐ์ ๋ช ๋ น์ด๋ค์ ๋ง์ด์ฃ .
EXISTS ๋ช ๋ น์ด๋ 1 ๋๋ 0 ์ ๋ฐํํฉ๋๋ค. ํค๊ฐ ์กด์ฌํ๊ฑฐ๋ ์กด์ฌํ์ง ์์๋ ๋ง์ด์ฃ .
๊ทธ๋ฆฌ๊ณ DEL ๋ช ๋ น์ด๋ ํด๋น ํค์ ๊ทธ ํค์ ํ ๋น๋ ๊ฐ์ ์ญ์ ํฉ๋๋ค.
> set mykey hello
OK
> exists mykey
(integer) 1
> del mykey
(integer) 1
> exists mykey
(integer) 0
์ ์์ ๋ฅผ ๋ณด์๋ฉด ๊ฐ ๋ช ๋ น์ด๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ฝ๊ฒ ์ดํด๊ฐ ๋์ค๊ฒ๋๋ค.
์ด ๋ช ๋ น์ด๋ค ์ธ์๋ ๋ฌด์ํ ๋ง์ key space ๊ด๋ จ ๋ช ๋ น์ด๋ค์ด ์์ต๋๋ค. ์ ๋ ๋ช ๋ น์ด์ ํจ๊ป ์์ฃผ ์ฌ์ฉ๋๋ ๋ช ๋ น์ด ์ค ํ๋๊ฐ ๋ฐ๋ก TYPE ๋ช ๋ น์ด์ ๋๋ค. ์ด ๋ช ๋ น์ด๋ ํน์ ํค์ ์ ์ฅ๋์ด์๋ ๊ฐ์ ํ์ ์ ๋ฐํํฉ๋๋ค. ์๋ ์์ ๋ฅผ ๋ณด์์ฃ .
> set mykey x
OK
> type mykey
string
> del mykey
(integer) 1
> type mykey
none
์ฒ์์ set mykey x ๋ก ํค mykey์ ๊ฐ x๋ฅผ ๋ฑ๋กํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ type mykey ๋ก mykey์ ์ ์ฅ๋ ๊ฐ x์ ํ์ ์ ์กฐํํด ๋ณด๋ string์ด ๋์๋ค์. ๊ทธ ๋ค์์ mykey๋ฅผ ์ญ์ ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ์กฐํ๋ฅผ ํด๋ณด๋ none ์ด๋ผ๊ณ ๋์๋ค์. ํด๋น ํค์ ์ ์ฅ๋ ๊ฐ์ด ์๋ค๋ ์๊ธฐ๊ฒ ์ฃ .
Redis ํค์ TTL (Time To Live)์ค์ ํ๊ธฐ
์ด๊ฑด ๋จ์ง ์คํธ๋ง ํ์ ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ํ์ ์ ์ ์ฉ๋๋ ๊ฒ์ด๊ธด ํฉ๋๋ค๋ง ๋ค๋ฅธ ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ์๊ธฐํ๊ธฐ ์ ์ ์ง๊ณ ๋์ด๊ฐ์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํค์ ํ์์์ ์๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ค์ ๋ ํ์์์ ์๊ฐ์ด ์ง๋๋ฉด ์๋์ผ๋ก ํค๋ ์ญ์ ๋ฉ๋๋ค. ์ด๋ ์ญ์ ๋๋๊ฒ์ ์ฌ์ฉ์๊ฐ ์ง์ DEL ๋ช ๋ น์ด๋ก ์ญ์ ํ๋ ๊ฒ๊ณผ ์์ ํ ๋์ผํ๊ฒ ์ญ์ ๊ฐ ๋๋ ๊ฒ์ ๋๋ค.
Redis expires ์ ๊ด๋ จํ์ฌ ์๋ ๋ด์ฉ์ ์์งํ์๊ธฐ ๋ฐ๋๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ๋ฆฌ์ด ๋จ์๋ก ๋์ํ๋ค.
- ์ด ๋จ์ ๋๋ ๋ฐ๋ฆฌ ์ด ๋จ์๋ก ๋ง๋ฃ๋๊ธฐ ๊น์ง์ ์๊ฐ์ ์ค์ ํ ์ ์๋ค.
- ๋ง๋ฃ์ผ์์ ๊ด๋ จ๋ ์ ๋ณด๋ ๋์คํฌ์ ๋ณต์ ๋์ด ์ ์ฅ๋๊ณ ๋ ๋์ค ์๋ฒ๊ฐ ๋ฉ์ถฐ๋ ์ฌ๊ธฐ๋ ๋ ๋ ํ์ฌ ์ผ์์ ๋น๊ตํ์ฌ ์ญ์ ํ๋ค.
๋ง๋ฃ์ผ์๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์์ฃผ ์ฝ์ต๋๋ค. ์๋ ์์ ๋ฅผ ํ๋ฒ ๋ณด์์ฃ .
> set key some-value
OK
> expire key 5
(integer) 1
> get key (์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์๋ง์ ๋ฐ๋ก ์คํ)
"some-value"
> get key (5์ด ๋ค์ ์คํ)
(nil)
์ ์์ ๋ ์ด๋ค ๊ฐ์ ์ ์ฅํ ๋ค 5์ด๋ก ๋ง๋ฃ์๊ฐ์ ์ง์ ํด์ฃผ๊ณ ๋ ๋ฒ์ GET ์ ํธ์ถํ ๋ ๋ง๋ฃ์๊ฐ์ ๋ฐ๋ผ ๊ฐ์ด ์กฐํ๊ฐ ๋๋์ง ์๋๋์ง๋ฅผ ํ์ธํด๋ณธ ๊ฒ์ ๋๋ค. 5์ด ๋ค์ ๋ง๋ฃ๋๋ผ๊ณ ์ง์ ํด์ฃผ์์ผ๋ 5์ด ๋ค์๋ nil์ด๋ผ๊ณ ๋จ๋ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค.
์ฌ๊ธฐ์๋ EXPIRE ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์ ๋ง๋ฃ์ผ์๋ฅผ ์ง์ ํด์ฃผ์๋๋ฐ ๋ง์ฝ์ ์ด ๋ง๋ฃ์ผ์๋ฅผ ์์ ๊ธฐ ์ํด์๋ PERSIST ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ EXPIRE๋ช ๋ น๊ณผ ๋์ผํ ๊ธฐ๋ฅ์ SET ๋ช ๋ น์ด์ ์ต์ ์ ์ด์ฉํด์ ์ ์ฉํ ์๋ ์์ต๋๋ค.
> set key 100 ex 10
OK
> ttl key
(integer) 9
์ ์์ ๋ ํค key์ ๊ฐ 100์ ์ ์ฅํ๋๋ฐ 10์ด ํ์ ๋ง๋ฃ๋์ด ํ๊ธฐํ๋ผ๋ ์ต์ ์ ๋ง๋ถ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ TTL ๋ช ๋ น์ด๋ก ํค key์ ๋ง๋ฃ๋๊ธฐ ์ ๊น์ง์ ์๊ฐ(์ด)์ ์กฐํ๋ฅผ ํด๋ณด๋ 9๊ฐ ๋์๋ค์. (์ฐธ๊ณ ๋ก TTL์ Time To Live ์ ์ฝ์์ ๋๋ค.)
์ด ๋จ์๊ฐ ์๋ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ์ค์ ์ ํ๋ ค๋ฉด, PEXPIRE ์ PTTL ๋ช ๋ น์ด๋ฅผ ์ฐธ๊ณ ํ์๋ฉด ๋ฉ๋๋ค. ๋๋ PEXPIRE๋์ SET ๋ช ๋ น์ด์ ์ต์ ์ ์ด์ฉํ ์๋ ์์ต๋๋ค.
์ ๋ด์ฉ์ ๋ ๋์ค ๊ณต์ ๋ฌธ์์ ๋์์๋ ๋ด์ฉ์ ์คํฐ๋ ํ ๊ฒธ ๊ฐ์ธ์ ์ผ๋ก ๋ฒ์ญํ ๋ด์ฉ์ ๋๋ค.
'๐ป Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋์ฐ์์ Docker๋ก PostgreSQL ๋์ฐ๊ธฐ (0) | 2016.11.24 |
---|---|
๋ฐ์ดํฐ ๊ตฌ์กฐ, ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ๋ณ ์๊ฐ ๋ณต์ก๋ ๋ฐ ๊ณต๊ฐ ๋ณต์ก๋ ์์ฝ ํ (0) | 2016.06.29 |
[Redis] ๋ ๋์ค ํค์ ๊ด๋ จ ๋ช ๋ น์ด (0) | 2016.06.18 |
[Redis] ๋ ๋์ค ๋ฐ์ดํ ํ์ ์ ์ข ๋ฅ, ์์ ๋ฐ ์์ฝ ์ค๋ช (0) | 2016.06.18 |
[Redis] ๋ ๋์ค ์์ํ๊ธฐ (์ค์นํ๊ธฐ) (0) | 2016.06.17 |