【发布时间】:2017-07-31 00:17:19
【问题描述】:
我的项目随机匹配一对用户。他们可以退出游戏并与其他用户随机匹配。
我不希望有一段时间可以一次又一次地匹配 2 个用户。
我将所有数据(如 user_id、lang、gender 等)保存在 postgres 表中。
为了暂时不再匹配它们,我使用 redis 排序列表和 unix time 来存储匹配的用户对。我决定使用 redis 是因为我的项目每天要存储 100 万对情侣。
当我必须将一个用户与另一个用户匹配时,我会从 redis 获得在最后 x 分钟内与他匹配的用户列表,然后我将它们传递给“其中 user_id 不在 ()”中(它们永远不会超过200,如果我将其限制为 200),当我运行查询以查找与他匹配的可用用户时。
这样我就不能使用应该比IN 更快的exists 或join 表单。然后我是否应该考虑使用 postgres 来存储这对夫妇,尽管我应该每天写 100 万个(当然我可以在一段时间后删除这些行),使用 EXISTS 或 JOIN 运行查询而不是 NOT IN 传递一个元组?.
我想知道表演。
【问题讨论】:
-
测试加入
VALUES表表达式作为FROM中的子查询。 IIRC 对于很多值来说是最快的。我前段时间写了一篇关于它的帖子,搜索我的历史。
标签: postgresql performance redis