如何在PHP中将数组数据存储到Redis中

时间:2018-06-28 06:57:51

标签: php redis

在我的项目中,我想将数组数据存储到Redis中。

我在这里使用PHP。

首先,它成功连接到Redis。然后,我定义了一个名称为info_g_1的数组。

最后,我使用mset函数存储此文件。

这是我的php代码:

<?php
$redis_obj = \common\Datasource::getRedis('instance1');//connect to redis successfully
$id = '1';
$r_goods = 'info_g_' . $id;
$r_goods = array(
 'sys_status' => 'one',
 'num_user' => 'two'
);

$redis_obj->mset($r_goods);

但是不幸的是,它失败了。在我的Redis中没有info_g_1数据。

    $redis_obj->sadd('info_g_'.$id,'one');
    $redis_obj->sadd('info_g_'.$id,'two');

并获取数据:

    $redis_obj->smembers('info_g_'.$id); //can get one and two.

但是这样,我不确定是属于sys_status还是num_user。

谁可以帮助我?

1 个答案:

答案 0 :(得分:1)

变量$r_goods中的值在以下代码的下一行被数组覆盖:

$r_goods = 'info_g_' . $id;
$r_goods = array(
 'sys_status' => 'one',
 'num_user' => 'two'
);

$r_goods中的实际值为:

array(
     'sys_status' => 'one',
     'num_user' => 'two'
    );

您也可以将其设置为:

$redis_obj->set('info_g_' . $id, 'value to store');

更新:要添加多个键值对,可以使用mset作为设置:

$redis_obj->mset($r_goods);

但是如果要将数组存储为与键对应的值。然后需要先json_encode数组,然后进行如下设置:

$redis_obj->set('key', json_encode(array('sys_status' => 'one', 'num_user' => 'two')));

并且可以检索为:

$array = json_decode($redis_obj->get('key'), true);

此背后的原因是,redis仅存储字符串,而不存储其他数据类型。