redis - 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 应用程序中有代表用户的对象,而不是对姓名、姓氏、电子邮件、密码使用不同的键,而是使用包含所有必填字段的单个哈希。
如果您想了解更多信息,请阅读下一节。
解决方案
推荐阅读
- python - DataFrame 采用列并集并保留找到第一个非 NaN 值
- excel - 从用户表单更新多个工作表
- webpack - SASS DevTools 未指向变量声明
- asp.net - UWP 10.1 不支持 NewtonSoft 吗?
- node.js - 安装 react-paypal-button 时出现 npm 错误
- qt - Qt 窗口调整纵横比 1:1
- mobile - 使用polymerjs打开手机摄像头
- python - sqlite3.OperationalError:无法打开数据库文件(灾难响应管道)
- google-chrome - 谷歌浏览器从脚本标签中剥离 nonce 值
- android - EGL 错误:“纹理资源为 NULL,未指定级别”