在redis中保存mysql表格数据

时间:2016-08-04 11:07:05

标签: php redis

我是redis的新手,所以我的问题可能是错的。

我想用redis保存用户数据。

例如,让数据为 -

    first_name            last_name                  email
    abc                   xyz                        abc@example.com
    def                   hig                        def@example.com

我的代码是 -

让我们在post array中获取数据

        require "predis/autoload.php";
        Predis\Autoloader::register();

        $redis = new Predis\Client(array(
         "scheme" => "tcp",
         "host" => "127.0.0.1",
         "port" => 6379));

        $redis->incr("id");
        $user_id = $redis->get("id");


        $redis->hset("users", 'id', $user_id);
        foreach($_POST as $key  =>  $post_values){
            $redis->hset("users", $key, $post_values);

        }

当我使用命令

查看用户数据时
$users = $redis->hgetall("users");

第二个用户与第一个用户重叠。 我认为id没有正确映射用户数据。

请建议。

2 个答案:

答案 0 :(得分:0)

我建议使用hmset而不是hset所以使用hmset,我认为最简单的方法是使用数组的名称作为用户ID:

HMSET user1 email "test@email.com" username "MyUser"

然后你可以使用

HMGET user1 email

获取用户1的电子邮件

对于PHP我在下面使用https://github.com/henderjon/redis是如何使用它在PHP中设置这些相同的命令

$redis = (new \Redis\RedisProtocol())->connect('127.0.0.1', '6379');
$redis->hmset("user1", ["email", "test@email.com", "username", "MyUser"]);

然后检索将是:

($redis->hmget("user1", ['email']))[0]

答案 1 :(得分:0)

这里的问题非常简单,你正在使用"用户"存储所有用户的数据,而每个用户本身就是一个哈希。因此,使用字符串" users"附加ID。你很高兴。

$redis->hset("users", 'id', $user_id);
Change it like $redis->hset("users:"+$user_id, 'id', $user_id);
foreach($_POST as $key  =>  $post_values){
        $redis->hset("users:"+$user_id, $key, $post_values);

    }

希望这有帮助