data-structures - Redis 的交集——Where 的类比
问题描述
我有以下结构
user_id: [
{item_id:delivered_at},
{item_id:delivered_at},
{item_id:delivered_at}
]
我需要做的:我有一组用于 user_id 的 item_id 作为参数,我需要检查它们是否已交付。我在这里看到两种方法:
- 我只存储key:string,在这种情况下,键将是user_id:item_id和值Delivered_at。因此,当我有 item_id 的数组时,我可以一致地查询所有 item_id(和一个网络请求)以返回每个 item_id(如果存在)的Delivered_at 。
- 第二种方法是为每个 user_id 存储一个 zset,key 是user_id,zset 是 score: Delivered_at和 value: item_id。
为什么我不喜欢第一种方法——我不能轻易地为提供的用户获取所有项目,这将是非常少的,下一个任务就是这个。
如果我可以将传入的 item_id 集合与 zset 中的集合相交,那将是完美的。据我了解 - 我可以相交集合,但在 redis 中只有 2 个集合,所以在我的情况下,我需要创建新的临时集,然后将它与 zset 中的一个相交。第二种方法有另一种方法-我可以从 zset 获取提供的用户的所有项目,然后在应用程序中相交集,但是我不喜欢这种方式,因为可能有成千上万的用户交付,而且它不是传输几 MB 数据以检查 2 或 3 次交付是个不错的主意。是否有任何选项可以将 INCOMING 集合与 Redis 中已经存在的集合相交?对于这种特定情况,是否有更好的方法来存储数据?我读过一些文章,包括 redis 博客中的二级索引。
解决方案
推荐阅读
- amazon-web-services - AWS - Elasticbeanstalk - 角色政策中的问题
- java - Android WebView 不重定向到另一个页面。SPA网站
- python - pip 显示安装过程中软件包安装的依赖关系
- android - E/zzf:检索 SafetyNet 令牌时出现问题:7:Android
- julia - 在 Julia 中有效地循环遍历结构
- c# - WPF 列表框分层项模板
- ios - “Realm.framework”无法打开,因为无法验证开发者。Xcode
- taskscheduler - 使用 Airflow 运行位于远程 Windows Box 中的 .bat 文件或 PowerShell 程序
- javascript - 带有自动完成功能的搜索栏
- solr - 避免在 solr 中插入新记录。只需要更新记录