2016-06-09 11 views
0

현재 memcached를 사용하고 있지만이 메커니즘을 redis로 옮기려고합니다.phpredis 함수 mSet with ttl

목표는 1000 번의 반복마다 전체 배열 (key => value)을 저장하는 것입니다.

올드 솔루션 :

<?php 
$data = array(
    'key1' => 'value1', 
    'key2' => 'value2', 
    'key3' => 'value3' 
); 
$memcached->setMulti($data, time()+864000); 

새로운 솔루션 :

<?php 
$data = array(
    'key1' => 'value1', 
    'key2' => 'value2', 
    'key3' => 'value3' 
); 
$redis->mSet($data); 

이 스크립트의 동작은 거의 동일하다.

멀티 (mSet 기능)을 사용 중일 때 유효 기간을 설정할 수 없습니다.

모든 솔루션?

답변

1

MSETSET과 함께 사용 가능한 EXPX 옵션을 지원하지 않습니다. 이 원자 할 필요가있는 경우

  • 가 어느 transactions 또는 Lua scripting 사용 : 당신은 당신의 필요에 따라 2 가지 옵션이 있습니다. (redis-cli에서) 트랜잭션 예는 다음과 같을 것이다 :

    > MULTI

    OK

    > SET 키 1의 값 1의 EX 10

    > SET의 키 2의 값 2의 EX 10

    대기중인

    퀴즈

    > EXEC

나는 phpredis을 잘 모르겠지만, 아마도 당신을 위해 이것을 처리하는 추상화가 있습니다.

  • 원자 성이 필요하지 않은 경우 SET 명령과 함께 pipelining을 사용할 수 있습니다.