我当前使用MySQL的应用程序拨打电话,从数据库中获取有关已拨电话号码和 call 者ID的信息。我想要一个组,其中在Redis中定义了 call 者ID的列表。假设有10个来电显示。但是对于每次拨号,我都想从Redis服务器中选择/获取 call 者ID,而不仅仅是一个随机数。 Redis有可能吗?这就像来自redis的“密钥”列表中的负载平衡一样,以确保所有密钥都有合理的使用机会?

数据集的一个示例是电话簿,它将作为密钥,并且该电话簿中将有10个电话号码。我想将这些号码用于每个唯一的拨号,以便电话簿中的所有号码都均匀地用于拨号。

我可以在MySQL中通过在表中设置一个update字段来做到这一点,但这将在MySQL上创建UPDATE。使用Redis可以轻松完成此操作吗?我似乎无法想到如何做到这一点的逻辑。

谢谢。

最佳答案

在Redis中有两种方法可以做到这一点:

ZSET

您可以使用zset条目的分数跟踪使用频率。因此,当您从Redis中获得最低分数时,会将其分数增加一。

附带的好处是,您可以轻松地准确看到每个元素已使用了多少次。

LIST

如果您不介意跟踪数字的使用情况。您也可以使用Redis列表进行操作。只是使用RPOPLPUSH source destination本身来实现循环负载均衡效果。基本上,它从底部获取一个元素,然后将其放回队列的顶部,显然,您会返回经过改组的元素的值。

好处是只有一个命令可以运行,并且该操作是原子的。

08-04 14:31