Функция phpredis mSet с 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);

Работа этих скриптов практически идентична.

Как вы можете видеть, redis не может установить дату истечения срока действия, когда я использую мульти (функция mSet).

Любое решение?

0

Решение

MSET не поддерживает EX а также PX варианты доступны с SET, У вас есть 2 варианта в зависимости от ваших потребностей:

  • Если вам нужно, чтобы это было атомарно, используйте либо операции или же Сценарии Lua. Пример с транзакциями (из redis-cli) будет выглядеть так:

    > МУЛЬТИ

    Хорошо

    > SET key1 value1 EX 10

    QUEUED

    > SET key2 значение2 EX 10

    QUEUED

    > EXEC

Я не знаком с phpredis, но он, вероятно, имеет абстракцию, которая обрабатывает это для вас.

  • Если вам не нужна атомарность, вы можете просто использовать конвейерная с несколькими SET команды.
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]