【发布时间】:2014-05-08 06:33:33
【问题描述】:
我已经开始使用 laravel。工作很有趣。我已经开始使用 laravel 的功能了。我已经开始使用redis,通过在我的系统中安装redis服务器并在app/config/database.php文件中更改redis的配置。通过使用set,redis 可以很好地处理单个变量。即,
$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 设置数组值?
【问题讨论】:
-
Redis 不熟悉 PHP 非标量数据类型,如数组,但快速而肮脏的选项是
$redis->set('name', serialize(array(5, 10)));或$redis->set('name', json_encode(array(5, 10)));,然后在获取时取消序列化或 json_decode -
所以我们必须对其进行编码而不是其他选择直接设置为数组?
-
PHP 数组是一种特定于 PHP 的数据类型,redis 与语言无关,所以它不知道如何处理它......我个人使用 Redis 与 igbinary 和自动序列化
-
好的,谢谢你的解释标记
-
@Kalai :您可以使用我在回答中提到的 laravel 外观将其存储为关联数组而无需序列化。