在我的项目中,我想将数组数据存储到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。
谁可以帮助我?
答案 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仅存储字符串,而不存储其他数据类型。