0

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

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

旧解决方案:

<?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 无法设置过期日期。

有什么解决办法吗?

4

1 回答 1

1

MSET不支持EXPX可用的选项SET。根据您的需要,您有 2 个选项:

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

    > 多

    好的

    > SET key1 value1 EX 10

    排队

    > SET key2 value2 EX 10

    排队

    > 执行

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

  • 如果您不需要原子性,则可以将流水线与多个SET命令一起使用。
于 2016-06-09T07:58:27.043 回答