[php redis] php Array Auto Serialize 설정

php Redis Serialize 설정


TL;DR

$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP);

 

일단 아래의 코드를 보자

<?php
$redis = new Redis();
try {
    $redis->connect('127.0.0.1','6379', 2.5, NULL, 150);
    $key = 'myKey';
    $value = array('v1' => 'Value1',
                    'v2' => 'Value2');
    $ttl = 10;
    $redis->setex( $key, $ttl, $value );
    $value = $redis->get($key);
    var_dump($value);
} catch(Exception $e) {
    var_dump($e);
}
$redis->close();
?>

위에 코드를 실행했을 때 나오는 결과는 
string(5) "Array"가 나오게 된다. 우리가 예측한 Array가 아닌 말그대로 타입이 Array인 String이 나오게 된다.

예전 redis에선 자동으로 Array를 설정해 준것같은데, 최근 php redis에서는 따로 serialize를 해주어야 하는것 같다.

$redis->_serialize(), $redis->_unserialize()를 사용해서 Array을 value로 넣을 때 일일히 넣어줘도 좋지만,
실제 개발 환경에서 그러기는 쉽지 않다.

이때 자동으로 serialize를 해주는 옵션을 설정하면 알아서 Array를 serialize해 넣어주게 된다.
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP);
위 옵션을 활성화 시킨 상태에서 Array를 set한뒤 get을 하게 되면 예상대로 Array변수가 반환되어 사용이 가능하다.

Result Code

<?php
$redis = new Redis();
try {
    $redis->connect('127.0.0.1','6379', 2.5, NULL, 150);
    $redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP);
    $key = 'myKey';
    $value = array('v1' => 'Value1',
                    'v2' => 'Value2');
    $ttl = 10;
    $redis->setex( $key, $ttl, $value );
    $value = $redis->get($key);
    var_dump($value);
} catch(Exception $e) {
    var_dump($e);
}
$redis->close();
?>

OutPut

array(2) { ["v1"]=> string(6) "Value1" ["v2"]=> string(6) "Value2" }

댓글 남기기

워드프레스닷컴으로 이처럼 사이트 디자인
시작하기