2016-06-09 59 views
0

我目前正在使用memcached,但我試圖將此機制移至redis。phpredis函數mt與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); 

這些腳本的操作幾乎是相同的。

正如你所看到的,當我使用multi(mSet函數)時,redis不能設置過期日期。

任何解決方案?

回答

1

MSET不支持和PX選項可用於SET。你有兩個選擇取決於你的需求:

  • 如果您需要這是原子,使用transactionsLua scripting。與交易(從redis-cli)的一個例子是這樣的:

    > MULTI

    OK

    > SET鍵1值1 EX 10

    QUEUED

    > SET鍵2值2 EX 10

    QUEUED

    >執行

我不熟悉phpredis,但它可能有一個抽象,爲您處理這個。

  • 如果你不需要原子性,你可以使用pipelining與多個SET命令。