PHP 5.2 ๋ธ๋์น์ redis ์ฌ์ฉํ๊ธฐ. ์์์ "์๋ฒ์์ ์ค์ ์ฝ๋ ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค" ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ด๊ฐ ์ฌ์ฉํ ๋ช ๋ น์ ์ง๋ ฌํ๋ ๋ฌธ์์ด lpush์ ๋๋ค.
์ ๋ PHP ๋ฐ๋ชฌ ์คํฌ๋ฆฝํธ์์ predis๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ฆ, ํญ์ ์๋ ์ค์ ๋๋ค. redis.conf์ ์๊ฐ ์ ํ์ ์ด๋ฏธ 0์ผ๋ก ์ค์ ํ์ต๋๋ค.
๋์ผํ ์ ๋ชฉ์ ์ ๋ฌธ์ ๋ฅผ ์ด๊ธฐ ์ ์ ์ฌ๊ธฐ ์ ์ด ์ค๋ ๋ ๋ ์ฐธ์กฐํ์ธ์. ํด๋ผ์ด์ธํธ ์ธก ๋ฌธ์ ์ ๊ด๋ จ์ด ์๋ ๊ฒ์ผ ์๋ ์์ต๋๋ค.
nrk๋ ๊ฐ์ฌํฉ๋๋ค. socket_timeout ๋ฐ read_write_timeout์ ์ค์ ํ๊ณ ๋์ค์ ์ฌ๊ธฐ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํ๊ฒ ์ต๋๋ค.
๋ฐ๋ชฌ๊ณผ ๊ฐ์ ์คํฌ๋ฆฝํธ์์ Predis๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ ํ ์๊ฐ์ ์์ ํ ๋นํ์ฑํํ๋ ค๋ฉด read_write_timeout
๋ฅผ -1
ํด์ผ ํฉ๋๋ค(์ด ๊ฐ์ Predis์ ์ด์ ๋ฐ ์ต์ ๋ฒ์ ์์ ์๋ํจ). ๋ํ redis.conf ์์ timeout = 0
๋ฅผ ์ค์ ํ์ฌ Redis์ ๊ธฐ๋ณธ ์๊ฐ ์ด๊ณผ๋ฅผ ๋นํ์ฑํํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Redis๋ 300์ด ๋์ ํ๋์ด
nrk, ์ธ๊ธํ ๋๋ก ์๋ํ์ผ๋ฉฐ ์ด์ ์๋ฒฝํ๊ฒ ์๋ํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
๊ทธ๋ฌ๋ ๋๋๋ก ์ฐ๊ฒฐ ์๊ฐ ์ด๊ณผ๊ฐ ๋ง์ด ์์ต๋๋ค. ์ด๋ฏธ timeout = 0 ๋ฐ read_write_timeout์ -1๋ก ์ค์ ํ์ต๋๋ค. ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ์ด๋ฅผ ๋๋ฒ๊ทธํ๊ธฐ ์ํด ํ ์ ์๋ ์ผ์ด ์์ต๋๊น?
timeout
๋ Predis์์ ์ธ์ํ๋ ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์๊ฐ ์๋๋ฏ๋ก connection_timeout
๋์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. connection_timeout
์ ๊ธฐ๋ณธ๊ฐ์ 5์ด์
๋๋ค. ๊ฐ์ ๋์ผ ์๋ ์์ง๋ง ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ
์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฌํ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ์ ๋ ์๋ฒ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์ด๋ ์ค์ ๋ก ๊ทํ์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฏ๋ก ์ ๊ฐ ๋์์ ๋๋ฆด ์ ์์ต๋๋ค. ์ด๋ฌํ ์๊ฐ ์ด๊ณผ์ ๊ฐ๋ฅํ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
KEYS
๋ช
๋ น์ ๊ฐ๋น์ผ ํธ์ถ์ ์ฌ์ฉํ๊ณ ์์ง ์์ต๋๊น? Redis์ ํค ์ ์ฅ์ ์์ ๋ฐ๋ผ KEYS
๊ฐ ์๋ฒ๋ฅผ ์ฐจ๋จํ ์ ์์ผ๋ฉฐ ๊ทธ ๋์ ๋ค๋ฅธ ์์ฒญ์ด๋ ๋ค์ด์ค๋ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.์ง๊ธ์ ์ด ๋ฌธ์ ๋ฅผ ์ด์ด ๋ก๋๋ค. ํ์ง๋ง Predis์ ๊ด๋ จ๋ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ ํ์คํฉ๋๋ค.
nrk. ์กฐ์ธํ ๋๋ก ๋๋ connection_timeout์ 30์ผ๋ก ์ฌ๋ ธ์ต๋๋ค. ์ด๊ฒ์ ๋ชจ๋ํฐ๋งํ ๊ฒ์ ๋๋ค.
๋ ๋ค๋ฅธ ์ ๋ฐ์ดํธ๋ก ์ฐ๊ฒฐ์ ์ธก์ ํ๋๋ฐ ์ค์ ๋ก 5์ด ํ์ ์์ธ๊ฐ ๋ฐ์ํ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ๋ค์์ ํตํด connection_timeout์ ์์ ํ๋ ค๊ณ ํ์ต๋๋ค.
์๋ก์ด Predis_Client($param, array('read_write_timeout' => -1, 'connection_timeout' => 30));
๊ทธ ๋ง์ต๋๊น? 30์ด connection_timeout์ด ์ ์ฉ๋์ง ์๊ณ ์ฌ์ ํ ์์ธ๊ฐ ๋ฐ์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํด๋ผ์ด์ธํธ ์ต์
์ด ์๋ ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์ ์ด๋ฏ๋ก read_write_timeout
๋ฐ connection_timeout
๋ $param
์์ ๋งค๊ฐ๋ณ์๋ก ์ง์ ํด์ผ ํฉ๋๋ค.
์์งํ ๋งํด์, Predis๋ ํธ์คํธ์ ์ฐ๊ฒฐํ ๋ ์์ผ ๋ฆฌ์์ค๋ก ๋ฉ์ง ์์ ์ ํ์ง ์์ต๋๋ค. ์ด๋ ๊ฑฐ์ ์ ์ ์ผ๋ก PHP์ ๋ด๋ถ์ ์์๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ PHP์ ๋ฒ๊ทธ(๊ฐ๋ฅ์ฑ์ ๋ฎ์ง๋ง ์ฌ์ ํ ๊ฐ๋ฅ์ฑ ์์) ๋๋ ์ผ๋ถ ๊ตฌ์ฑ/๋ฐํ์์ผ ์ ์์ต๋๋ค. ์๋ฒ์ ๋ฌธ์ ๊ฐ ์๊ฑฐ๋ Redis๊ฐ ์ ์ ๋์ ์๋ฒ๋ฅผ ์ฐจ๋จํ๋ ๊ณผ์คํ ์์ ์ ์ํํฉ๋๋ค.
nrk๋, ๋ค์ ํ ๋ฒ ๋ต๋ณ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋๋ฐ ip_conntrack ๋ฌธ์ ๊ฐ ์๋ฒ์์ ์คํ๋๊ณ ์๋ ๊ฒ๋ฟ์ ๋๋ค. conntrack์ด ์์ ๋๋ฉด ์ฐ๊ฒฐ ์๊ฐ ์ด๊ณผ๋ ์ฌ๋ผ์ง๋๋ค.
์๊ฐ ์ด๊ณผ ๋ค์ ์จ๊ฒจ์ง ์ค์ ๋ฌธ์ ๋ฅผ ๋ง์นจ๋ด ์ฐพ์๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ์ฌ์ฉ์์๊ฒ ์๊ฐ ์ด๊ณผ ๋ฌธ์ ํด๊ฒฐ์ ์ํ ์ด๊ธฐ ๊ฒ์ฌ ๋ชฉ๋ก์ ์ ๊ณตํ๊ธฐ ์ํด FAQ์ ์ด๋๊ฐ์ ์ด๊ฒ์ ์ถ๊ฐํ ๊ฒ์ ๋๋ค.
read_write_timeout์ 0์ผ๋ก ์ค์ ํ์ฌ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋๋ predis์์ ๊ทธ๋ ๊ฒ ํ๋๋ฐ predis ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋๊ฐ์ด ํ ์ ์์ต๋๊น?
์ฌ๊ธฐ์ ํ์๋ ๋๋ก http://code.google.com/p/dires/source/browse/trunk/predis/examples/PubSubContext.php?r=4
๋ค์์ ์ฌ์ฉํ์ฌ predis ํด๋ผ์ด์ธํธ๋ฅผ ๋ง๋ค๊ณ ์์ต๋๋ค. $redis = new Predis\Client("tcp://".$turboConfig->getActivitiesRedisHost()); ๋ด ๊ตฌํ์์ ์ด๋ป๊ฒ read_write_timeout์ ์ ๋ฌํด์ผํฉ๋๊น?
@amitchhajer ํด๋ผ์ด์ธํธ๋ ๋ช
๋ช
๋ ๋ฐฐ์ด ๋๋ URI ๋ฌธ์์ด ๋ชจ๋์ ๋์ผํ ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์๋ฅผ ํ์ฉํ๋ฏ๋ก URI ๋ฌธ์์ด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ธ ๊ฒ์ฒ๋ผ ์ถ๊ฐํ ์ ์์ต๋๋ค. tcp://127.0.0.1:6379?read_write_timeout=0
.
@nrk ์ ๋ณด ๊ฐ์ฌํฉ๋๋ค, ์ง๊ธ์ ๊ฝค ์ ์๋ํฉ๋๋ค.
๋ฐํ์์ read_write_timeout์ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํฉ๋๊น? ํ์์์ ๋งค๊ฐ๋ณ์(์์ฑ์ ์ ์ธ)์ ๋ํ ์ค์ ์๊ฐ ์์ต๋๊น?
@bondeg ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์๋ ์๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ผ๋ฏ๋ก ์ฐ๊ฒฐ์ด ์ด๊ธฐํ๋๋ฉด ๋ณ๊ฒฝํ ์ ์์ง๋ง ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉํ๋ ์ฐ๊ฒฐ ๊ฐ์ฒด์์ ๊ธฐ๋ณธ ์คํธ๋ฆผ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์์ ์คํธ๋ฆผ ์ต์ ์ ์ ์ ํ๊ฒ ๋ณ๊ฒฝํ์ฌ ์ด ์ ํ์ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๋ค์์ ํด๋ฌ์คํฐ ๋๋ ๋ณต์ ๋ชจ๋์์ ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ๊ฐ์ ํ ์์ ์ค๋ํซ์ ๋๋ค.
$connection = $client->getConnection();
$stream = $connection->getResource();
stream_set_timeout($stream, 2);
$connection->getResource()
์ํํ๋ฉด Redis์ ๋ํ connect()
์์
์ด ํจ๊ณผ์ ์ผ๋ก ํธ๋ฆฌ๊ฑฐ๋๋ฏ๋ก ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ง์ฐ ์ฐ๊ฒฐ์ ์ด์ ์ ์๊ฒ ๋ ์ ์์ต๋๋ค.
connection_timeout
๋งค๊ฐ๋ณ์๋ Predis์ ์ ๋ฒ์ ์์ timeout
๋ก ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค.
๋๋ ' h ํค'๋ฅผ ๊ฝค ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ด ์ ๊ธ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๊น?
๋ฐ๋ชฌ๊ณผ ๊ฐ์ ์คํฌ๋ฆฝํธ์์ Predis๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ ํ ์๊ฐ์ ์์ ํ ๋นํ์ฑํํ๋ ค๋ฉด
read_write_timeout
๋ฅผ-1
ํด์ผ ํฉ๋๋ค(์ด ๊ฐ์ Predis์ ์ด์ ๋ฐ ์ต์ ๋ฒ์ ์์ ์๋ํจ). ๋ํ redis.conf ์์timeout = 0
๋ฅผ ์ค์ ํ์ฌ Redis์ ๊ธฐ๋ณธ ์๊ฐ ์ด๊ณผ๋ฅผ ๋นํ์ฑํํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Redis๋ 300์ด ๋์ ํ๋์ด
redis.conf์์ timeout=0์ ์ค์ ํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ๋จ์ ์ด๋ ์ฃผ์ ์ฌํญ์ด ์์ต๋๊น?
๋ด๊ฐ ์์ฌํ๋ ๊ฒ์ ..์ฐ๊ฒฐ์ด ๋๊ธฐ์ง ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
Redis ์ฌ์ฉ๋ฅ ์ ๋๊ฒ ์ ์ง๋ฉ๋๋ค.
nrk๋, ๋ค์ ํ ๋ฒ ๋ต๋ณ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋๋ฐ ip_conntrack ๋ฌธ์ ๊ฐ ์๋ฒ์์ ์คํ๋๊ณ ์๋ ๊ฒ๋ฟ์ ๋๋ค. conntrack์ด ์์ ๋๋ฉด ์ฐ๊ฒฐ ์๊ฐ ์ด๊ณผ๋ ์ฌ๋ผ์ง๋๋ค.
์ด ๊ณ์ฝ์ ์์ ํ๋ ๋ฐฉ๋ฒ .. ์ด๋๋ฅผ ์ฐพ์์ผํฉ๋๊น?
redis.conf์์ timeout=0์ ์ค์ ํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ๋จ์ ์ด๋ ์ฃผ์ ์ฌํญ์ด ์์ต๋๊น?
@aditya-rewari-cb ์ค์ ๋ก redis.conf์ timeout = 0
๋ Redis 2.4(๋ช ๋
์ ์ ๋ฆด๋ฆฌ์ค๋จ) ์ดํ ๊ธฐ๋ณธ๊ฐ์ด๋ฏ๋ก ๋จ์ ์ด ์๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค.
๋ฐ๋ชฌ๊ณผ ๊ฐ์ ์คํฌ๋ฆฝํธ์์ Predis๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ ํ ์๊ฐ์ ์์ ํ ๋นํ์ฑํํ๋ ค๋ฉด
read_write_timeout
๋ฅผ-1
ํด์ผ ํฉ๋๋ค(์ด ๊ฐ์ Predis์ ์ด์ ๋ฐ ์ต์ ๋ฒ์ ์์ ์๋ํจ). ๋ํ redis.conf ์์timeout = 0
๋ฅผ ์ค์ ํ์ฌ Redis์ ๊ธฐ๋ณธ ์๊ฐ ์ด๊ณผ๋ฅผ ๋นํ์ฑํํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Redis๋ 300์ด ๋์ ํ๋์ด
@nrk ์ ๋ ๋ฐ๋ชฌ ํ๋ก์ธ์ค (laravel ๊ฐ๋
์ ์์
์)์ ํจ๊ป Redis๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ผ๋ฐ ์บ์ฑ ๊ณผ ํจ๊ป
'read_write_timeout' => -1 ์ฌ์ฉ ์ ์ฃผ์ ์ฌํญ์ด ์์ต๋๊น?
์ด ๋ณ๊ฒฝ์ผ๋ก ์ธํด Redis์ ์ ๊ธฐ์ ์ธ ์บ์ฑ ์ฌ์ฉ์์ ํ์์ด๋ ๋ฒ๊ทธ์ ๊ฐ๋ฅ์ฑ์ ํ์ธํ๊ณ ์ถ์์ต๋๋ค!
๊ฐ์ฌ ํด์ !
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฐ๋ชฌ๊ณผ ๊ฐ์ ์คํฌ๋ฆฝํธ์์ Predis๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ ํ ์๊ฐ์ ์์ ํ ๋นํ์ฑํํ๋ ค๋ฉด
read_write_timeout
๋ฅผ-1
ํด์ผ ํฉ๋๋ค(์ด ๊ฐ์ Predis์ ์ด์ ๋ฐ ์ต์ ๋ฒ์ ์์ ์๋ํจ). ๋ํ redis.conf ์์timeout = 0
๋ฅผ ์ค์ ํ์ฌ Redis์ ๊ธฐ๋ณธ ์๊ฐ ์ด๊ณผ๋ฅผ ๋นํ์ฑํํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Redis๋ 300์ด ๋์ ํ๋์ด