gpt4 book ai didi

php - 在 php 中使用 Redis 获取哈希列表的最佳方法是什么

转载 作者:可可西里 更新时间:2023-11-01 11:42:54 24 4
gpt4 key购买 nike

我正在使用 Redis 和 predis 构建一个通知系统(不是移动推送通知,只是网站上的视觉警告)。比如当user1给user2发消息的时候,我在Redis中创建了一个entry。在这种类型的事件中,我创建了一个散列,其中包含有关通知的所有信息(日期、内容、发件人...)。然后,我将哈希键添加到特定于用户的列表中。

//creating the notification
notificationId = uniqid();
$this->redis->hmset($notificationId, array(
"sender" => "sender's Name",
"type" => "message",
"user_id" => "recipient's id",
"content" => "message content",
"date" => new \Datetime()
)
);
//adding the id of the notification in the user's message notifications list
$this->redis->lpush("messageList".$userId, $notificationId);

然后,当我想检索用户的所有消息通知时:

$listName = "messageList:".$userId;
$arrNotifications = $this->redis->pipeline(function ($pipe) use ($listName) {

foreach ($pipe->getClient()->lrange($listName, 0, -1) as $key => $id) {
$arrNotif[] = $pipe->hgetall($id);
}

});

我用这个方法得到了所有想要的结果,但是如果消息列表包含几千个条目,这个操作需要 0.5 秒。它看起来有点慢,Redis 以超快着称。所以我想知道我做事是否正确。

有什么建议吗?

谢谢

最佳答案

如果使用 phpredis,您可能会对性能更加满意.

这是您必须在服务器中编译的 php C 扩展。

我也是从 predis 开始的,很高兴能对 phpredis 进行基准测试更好的解决方案。

关于php - 在 php 中使用 Redis 获取哈希列表的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21462176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com