phpredis函数mSet与ttl

时间:2016-06-09 07:48:45

标签: php redis memcached ttl phpredis

我目前正在使用memcached,但我正在尝试将此机制移至redis。

我的目标是每1000次迭代保存整个数组(key =>值)。

旧解决方案:

<?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 个答案:

答案 0 :(得分:1)

MSET不支持EX提供的PXSET选项。根据您的需要,您有两种选择:

  • 如果您需要将其设为原子,请使用transactionsLua scripting。事务(来自redis-cli)的示例如下所示:

    &GT; MULTI

    &GT; SET key1 value1 EX 10

    QUEUED

    &GT; SET key2 value2 EX 10

    QUEUED

    &GT; EXEC

我不熟悉phpredis,但它可能有一个抽象来处理这个问题。

  • 如果您不需要原子性,则只需使用pipelining多个SET命令。