gpt4 book ai didi

join - 如何在 Redis 中执行 "left join"?

转载 作者:IT王子 更新时间:2023-10-29 06:00:08 53 4
gpt4 key购买 nike

假设我有一个类似于 reddit 或堆栈溢出的结构。

例如假设我有一个类似 json 的结构

posts = [{id: 1, title: "foo", pages: 300}, {id: 2, title: "bar", pages: 300}]

votes = [{user_id: 1, post_id: 1, vote: "upvote"}]

我怎样才能得到与此类似的结果(假设已知 user_id 为 1,获取帖子并附加用户对该项目的投票):

posts = [{id: 1, title: "foo", pages:300, vote: "upvote"}] 

目前我正在使用 sql 左外连接,但我正在尝试使用 redis 来实现它。我只是很难思考如何在 Redis 中有效地表达这一点。

最佳答案

您可以将每个用户的投票存储为排序集(例如,得分 1 表示赞成,分数 -1 表示反对):

# Register upvote for post 1
ZADD votes:user:1 1 1
# Register downvote for post 2
ZADD votes:user:1 -1 2

正在获取用户 1:s 对帖子 1 的投票:

ZSCORE votes:user:1 1
# => "1"

如果您需要引用其他方向的投票(给定帖子的所有投票),您可以简单地保留一个类似的集合,例如votes:post:1,以及对该帖子的投票。或者,如果您只需要跟踪累积分数,只需保留一个计数器即可。

关于join - 如何在 Redis 中执行 "left join"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18862507/

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