2013-11-18 6 views
1

Я использую клиент predis php. Мой код, как:predis hmset вложенный массив в значении

$ObjArray = get_object_vars ($obj);  
$redis->hmset("post:4545",$objArray); 

ObjArray, как: массив ( "ID" => 1212, "имя" => "тест", "любит" => массив (1,2, 3), «comments» => массив (0 => (1,2,3), 1 => (1,2,3))

С этим я получаю сообщение об ошибке: redis ERR Ошибка протокола: недопустимая длина навалом

Не может быть массив в значении redis hashe?

ответ

3

Redis хэш не многомерная так значения полей могут быть только строка. Значения в likes и comments в переменной $ObjArray являются массивами, что означает, что они не очень хороши, вы должны либо сериализовать их (JSON, либо любой формат сериализации), либо сохранить их в разные и отдельные ключи.

+0

Этого права, 'stringify' JSON кажется решением для массивов в этом случае – diti

0

Я никогда не использовал predis, но мало исследовал, что, возможно, вам придется сериализовать свой объект, поскольку predis не сериализует ваш объект автоматически.

Более подробная информация о ссылке ниже

https://github.com/nrk/predis/issues/29

1

Я думаю, что очень поздно ответить на этот вопрос, но кто-то может найти этот ответ полезным.

Используйте json_encode времени сохранения multidiomentional данных и использовать json_decode после получения данных от Redis

Смежные вопросы