Redis设计了一个队列系统

时间:2014-08-07 18:02:33

标签: redis

我目前正在构建一种排队系统,但我有一些问题用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中执行此操作?

1 个答案:

答案 0 :(得分:2)

存储用户'哈希的细节是个好主意。然后在排序集中,您可以使用用户的id作为成员,并使用timestamp作为分数。这样,即使您删除了一些成员,也会自动计算排名。