2017-07-31 50 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即可實現循環負載均衡效果。基本上它會從底部獲取一個元素,並將其放回到隊列的頂部,顯然,您會返回混洗元素的值。

好處是隻有一個命令運行和操作是原子的。