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
可用的 EX
和 PX
选项。根据您的需要,您有 2 个选项:
如果您需要它是原子的,请使用 transactions or Lua scripting。交易示例(来自 redis-cli
)如下所示:
> 多个
好的
> SET key1 value1 EX 10
排队
> SET key2 value2 EX 10
排队
> 执行
我不熟悉 phpredis,但它可能有一个抽象可以为您处理这个问题。
- 如果不需要原子性,可以只使用 pipelining 和多个
SET
命令。
我目前正在使用 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
可用的 EX
和 PX
选项。根据您的需要,您有 2 个选项:
如果您需要它是原子的,请使用 transactions or Lua scripting。交易示例(来自
redis-cli
)如下所示:> 多个
好的
> SET key1 value1 EX 10
排队
> SET key2 value2 EX 10
排队
> 执行
我不熟悉 phpredis,但它可能有一个抽象可以为您处理这个问题。
- 如果不需要原子性,可以只使用 pipelining 和多个
SET
命令。