Хранение массива данных с помощью 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
?
Ответы
Ответ 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);