2013-10-14 1 views
1

Я попытался с помощью lpushИспользование Predis для хранения данных формы

$list = "flavors"; 
$array = array($_GET["mainid"], $_GET["flavor1"], $_GET["flavor2"], $_GET["flavor3"]); 
$redis = new Predis\Client(); 
$redis->lpush($list,implode("", $array)); 
echo $redis->lrange(0, -1); 

Я попытался с помощью hset

$redis->hset("flavors", $_GET["mainid"], $_GET["mainid"]); 
$redis->hset("flavors", $_GET['mainid'] . "flavor1", $_GET["flavor1"]); 
$redis->hset("flavors", $_GET['mainid'] . "flavor2", $_GET["flavor2"]); 
$redis->hset("flavors", $_GET['mainid'] . "flavor3", $_GET["flavor3"]); 
echo $redis->hgetall($_GET['mainid']); 

Но я не могу получить, чтобы работать, потому что я получаю эту ошибку: http://pastie.org/8401717

Как я мог это исправить? Я думаю, что это что-то вроде того, что ему присваивается массив, когда он ожидает строку, но у меня есть implode, так почему же это не работает? Если он вообще не работает, какой другой тип данных Redis можно использовать?

ответ

1

Вы получили эту ошибку при использовании lpush, потому что ключ flavors уже сохранен с другим типом данных Redis. Поэтому вы должны удалить этот ключ, прежде чем повторять попытку.

Вы также использовали lpush неправильно. Вы должны попробовать это:

foreach ($array as $value) { 
    $redis->lpush($list, $value); 
} 

Или, если ваш Redis поддержка апи мульти Титулы:

call_user_func_array(array($redis, 'lpush'), array_merge($list, $array)); 

Если вы хотите сохранить ароматы от mainid, вы можете сохранить его с несколькими ключами и использовать lpush:

$list = "flavor:{$_GET['mainid']}"; 
$redis->lpush($list, $_GET["flavor1"]); 
$redis->lpush($list, $_GET["flavor2"]); 
$redis->lpush($list, $_GET["flavor3"]); 

Другой способ хранить в одном хэша и использовании json_encode (не используйте лопаются):

$data = json_encode(array($_GET["flavor1"], $_GET["flavor2"], $_GET["flavor3"])); 
$redis->hset('flavors', $_GET["mainid"], $data); 
+0

спасибо, используя json_encode и хеш работал для меня. – mountainlion88

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

  • Нет связанных вопросов^_^