我目前正在构建一种排队系统,但我有一些问题用Redis设计系统。
基本上我会有很多商店,每个商店都会有很多用户。
我想记录用户的个人资料,例如手机号码,队列号码,电子邮件,时间队列。
队列号必须按顺序排列。用户'当中间用户离开队列时,队列号也会更新。 (意思是当队列号2的用户离开时,队列号为3 4 5 6 7的其他用户变为2 3 4 5 6。
我的数据对于商店来说就像这样:
shop1 : {
user1: {
handphone: 4520502124,
name: "david",
time: "11.50AM"
},
user2: {
handphone: 4501250125,
name: "peter",
time: "12.00PM"
},
user3: {
handphone: 401201250,
name: "john",
time: "12.15PM"
}
}
shop2 : {
user1: {
handphone: 12561256126,
name: "andy",
time: "12.00PM"
}
user2: {
handphone: 512561261,
name: "belle",
time: "01.00PM"
}
shop1queue: ["user1","user2","user3"];
shop2queue: ["user1","user2"];
我使用哈希来存储用户'配置文件,我可能可以通过HDEL删除它们。 我使用有序集来保存队列号,每当中间用户离开时,我都可以使用ZRANK来获取其他用户的队列号。
问题:
对于我的方案,使用排序集来保持队列号的正确方法吗?
如果我想获取shop1中的所有哈希键,包括里面的值,我该如何在Redis中执行此操作?
答案 0 :(得分:2)
存储用户'哈希的细节是个好主意。然后在排序集中,您可以使用用户的id
作为成员,并使用timestamp
作为分数。这样,即使您删除了一些成员,也会自动计算排名。