Подтвердить что ты не робот

Хранение массива данных с помощью Redis (из Laravel)

Я начал работать с laravel. Очень интересно работать. Я начал использовать особенности laravel. Я начал использовать redis, установив redis-сервер в свою систему и изменив конфигурацию для redis в app/config/database.php файле. Команда redis отлично работает для одиночных переменных с помощью set. то есть.,

$redis = Redis::connection();

$redis->set('name', 'Test');

и я смог получить значение с помощью

$redis->get('name');

Но я хочу установить массив с помощью функции set. Если я попытаюсь сделать следующее сообщение об ошибке

 strlen() expects parameter 1 to be string, array given 

Я попытался использовать следующие коды.

$redis->set('name', array(5, 10));

$values = $redis->lrange('names', array(5, 10));

и если я использую

$values = $redis->command('lrange', array(5, 10));

получить следующую ошибку

 'command' is not a registered Redis command 

Может ли кто-нибудь объяснить мне проблему и возможно ли это с помощью redis?... мы можем установить значения массива с помощью redis?

4b9b3361

Ответ 1

Это ответили в комментариях, но чтобы сделать ответ более ясным для людей, посещающих в будущем.

Redis является агностиком языка, поэтому он не будет распознавать какой-либо тип данных, специфичный для PHP или любого другого языка. Самый простой способ - это serialise/json_encode данные по набору, тогда unserialise/json_decode на get.

Пример для хранения данных с помощью json_encode:

$redis = Redis::connection();

$redis->set('user_details', json_encode(array('first_name' => 'Alex', 
                                              'last_name' => 'Richards'
                                              )
                                       )
           );

Пример для получения данных с помощью json_decode:

$redis    = Redis::connection();
$response = $redis->get('user_details');

$response = json_decode($response);