gpt4 book ai didi

redis - 以 Redis 方式查询随机但未读的键

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

我有数千条消息,每条消息都像属性列表(文本、主题、日期等)一样存储在单独的键中:msg:1001msg:1002等等……

还有一个以 messages 键控的列表,其中包含所有现有消息的 ID:1001,1002,1003...

现在我需要获取 10 条随机消息。

但是,我只需要那些未被用户标记(未读)的消息。

每个用户都有一个散列,键入 flags:USERID = 1001=red,1005=blue,1010=red,...

目前,我必须在我的应用程序内存中保留一个完整的消息列表以及当前登录的所有用户的所有标志,并手动完成所有数学运算(在 JavaScript 中)。

有没有办法以 Redis 的方式进行这样的查询,而不会在应用程序端复制所有数据?

最佳答案

您的问题是 space–time tradeoff 的示例.一方面,你说你不想在你的系统中保留一个未标记消息的列表,但我猜你也想保持你的应用程序相对快速。因此,我建议放弃一些空间并保留一组未标记的消息。

在您的系统中创建消息时,将它们都添加到 messages ( SADD messages <messageid> ) 和 messages_unflagged ( SADD messages_unflagged <messageid> )。在用户向消息添加标志后,从未标记的集合 ( SREM messages_unflagged <messageid> ) 中删除该消息。当您需要 10 条随机的、未标记的消息时,您可以在恒定时间内获取它们的 ID ( SRANDMEMBER messages_unflagged 10 )。

关于redis - 以 Redis 方式查询随机但未读的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26588110/

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