phpredis 函数 mSet 与 ttl

phpredis function mSet with ttl

我目前正在使用 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 无法设置过期日期。

有什么解决办法吗?

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

  • 如果您需要它是原子的,请使用 transactions or Lua scripting。交易示例(来自 redis-cli)如下所示:

    > 多个

    好的

    > SET key1 value1 EX 10

    排队

    > SET key2 value2 EX 10

    排队

    > 执行

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

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