Как сохранить массив данных в Redis в PHP - PullRequest
0 голосов
/ 28 июня 2018

В моем проекте я хочу сохранить данные массива в 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);

Но не повезло, все работает не так. В моем редисе нет данных 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 голосов
/ 28 июня 2018

Значение в переменной $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 хранятся только строки без другого типа данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...