Redis特殊场景下出队入队问题?

1,场景描述:

通过一个接口获取到一个一维数组的号码池,如下:

array(6) { 
    [0]=> string(12) "021-58385539" 
    [1]=> string(12) "021-58305867" 
    [2]=> string(12) "021-50430592" 
    [3]=> string(12) "021-58649537" 
    [4]=> string(12) "021-50917671" 
    [5]=> string(12) "021-56483701" 
}

将这个号码池放入队列中,我们的人员登录系统后,第一个进来的请求获取到第一个号码,然后将该号码出队,第二个人进来取得第二个号码,依此类推...直到号码被使用完;

如果有31个人(31个请求),只有30个号码,,则第31个人取得第一个号码,为了实现这种情况,我的想法是第一个人取得的号码出队后再次进入队尾;

现在遇到的问题是:

这个接口的数据是随时变动的

每个人进来就调用这个接口的话,比如第一个人进来这6个号码都入队了,取走第一个号码,第二个人进来又将这6个号码入队了,如果使用lpush方法的话,队列中就有个重复的两组号码;

请问如何解决???

阅读 2.9k
3 个回答

将队列元素弹出以后,将弹出的元素放入队尾,至于将6个号码同时放入队列,只需要在初始化队列时进行就可以了

lpop,rpush就可以了。。初始化6个号码的地方只调用一次,并且要加锁

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题