我有一个存储在哈希中的预订 HSET预订booking_id“1”,booking_info .. ..
并且zset的时间戳为分数,而值为booking_id,这些是预订创建日期 例如zet create_date 我还有4种类型的套装,其状态根据预订值设置为booking_ids 例如 预订:待定值booking_ids 预订:确认值booking_ids 最后一个与包含预订的zet相同 zset deadline_date预订。
所以现在我需要显示已经确认并且创建日期范围从日期1到日期2以及截止日期从日期1到日期2的预订 感谢
答案 0 :(得分:1)
对我而言,有一些可能的选择可以解决问题,具体取决于您希望延迟到Redis(或不是)的处理量。您的基本步骤是:
确定创建日期在所需范围内的预订ID。问题上的标记表示您正在使用phpredis
,因此您可以使用zRangeByScore
获取此标记。
执行相同操作以识别截止日期在所需范围内的ID。
确定已确认的预订ID。根据您的问题描述,它已作为一组存储在Redis中。
现在的任务是确定所有三组中都存在的预订ID。你可以:
zRangeByScore
应该已经检索到代表预订ID的数组,这些数据属于创建日期和截止日期的正确范围,sMembers
可以为您提供包含已确认集中所有预订ID的数组。zRangeByScore
将sAdd
结果检索到的所有预订ID作为一组推送回Redis。然后,您可以让Redis为您提供此集合与使用sInter
设置的已确认预订之间的交集,该预订应返回满足所有这些条件的预订ID数组。如果你走这条路线,你可能想要记住删除你创建的任何一套,以保存满足创建日期和截止日期条件的所有ID。无论哪种方式,一旦获得所有ID,您就可以使用hGet
检索与每个ID相关联的预订信息。