2017-07-31 21 views
1

我的应用程序当前使用MySQL使得电话调用从数据库中获取有关拨打号码和呼叫者ID的信息。我想要一个组在Redis中定义的调用者ID列表。假设有10个来电显示。但是,对于每个拨号,我想从redis服务器选择/获取来电显示不只是一个随机数。 Redis有可能吗?这就像从redis的Keys列表中进行负载平衡,以确保所有密钥都有一个公平的使用机会?通过Redis使用GET负载平衡密钥

数据集的一个例子将是一个电话簿,它将是关键,并且该电话簿中将会有10个电话号码。我希望将这些号码用于每次唯一拨号,以便电话簿中的所有号码均匀用于拨号。

我可以在MySQL中通过在表中设置更新字段来做到这一点,但这将增加MySQL上的UPDATE。 Redis可以轻松完成这件事吗?我似乎无法想出如何做到这一点的逻辑。

谢谢。

回答

3

有两种方法可以做到这在Redis的:

ZSET

您可以用zset项的得分跟踪的使用频率。所以当你以最低的分数从Redis中取出一个时,你的分数会增加1。

副作用是你可以很容易地看到每个元素的使用次数。

LIST

如果你不打扰关于数字跟踪使用情况。你也可以用Redis列表来完成。只需从/自身使用RPOPLPUSH source destination即可实现循环负载均衡效果。基本上它会从底部获取一个元素,并将其放回到队列的顶部,显然,您会返回混洗元素的值。

好处是只有一个命令运行和操作是原子的。