我是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没有正确映射用户数据。
请建议。
答案 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);
}
希望这有帮助