首页 > 解决方案 > Redis - 在一次通话中获得用户对多个帖子的喜欢

问题描述

这不是什么新鲜事,但无法决定采取的最佳方法。

这是一些类似于 facebook 墙的东西。如果登录的用户已经喜欢该帖子,则以绿色显示“喜欢”按钮,否则以灰色显示。

这是我现在正在考虑的两种方法

对于我在单个视图中向用户显示的 40 个帖子,获取 40 个帖子的 Post_ids,然后

1)如果我使用类似的东西在 SET 中存储喜欢

post#id: 喜欢 userid1 userid2

我可以编写 Lua 脚本来为上述 40 个 post_id 运行 ISMEMBER 并将结果提供给用户

2)如果我使用类似的东西将喜欢存储在哈希中

用户#id:喜欢 post_Id1 1 post_id2 1 ....

在这里,我将喜欢的 post_id 作为键存储在用户哈希集中,值是一些虚拟值。现在使用这种方法,我现在可以使用HMGET user#id:likes post_id1 post_id28 ...单个命令查看用户喜欢的帖子。

我可以知道第二种方法是否有问题?它看起来简单易行。同样来自this document, 它说https://redis.io/topics/memory-optimization

尽可能使用哈希

小散列被编码在一个非常小的空间中,因此您应该尝试尽可能使用散列来表示您的数据。例如,如果您在 Web 应用程序中有代表用户的对象,而不是对姓名、姓氏、电子邮件、密码使用不同的键,而是使用包含所有必填字段的单个哈希。

如果您想了解更多信息,请阅读下一节。

标签: redis

解决方案


推荐阅读