gpt4 book ai didi

Java:我可以使用Redis db创建优先级队列并根据数据集中键的值设置优先级吗

转载 作者:IT王子 更新时间:2023-10-29 06:14:51 24 4
gpt4 key购买 nike

我是 Redis 新手。我想通过 Java 客户端在 Redis 中使用优先级队列。我将有一组键值对。并将其用作优先级队列。

数据集包含键及其对应的值。例如 [a:1,b:1,c:1]。值字段将表示键在数据集中出现的次数。如果将另一个键“a”插入到数据集中,则它变为 [a:2,b:1,c:1]。

这里是优先级。集合中出现的大多数键将具有最高优先级,在示例中为 [a],并且它应该位于队列的顶部。所以当我弹出队列时,优先级最高的元素应该弹出。

此外,如果数据集看起来像这样 [a:2,b:2,c:2],那么我想随机选择一个从队列中弹出。

由于我的数据集是键值对,所以我想使用 Redis [你可能会建议一个更好的]。

最佳答案

应该可以通过 Redis 排序集和 Lua 脚本来实现。排序集是按分数排序的元素集,但分数可以动态更新。更新排序集分数的一种方法是通过 ZINCRBY 增加其范围,这对应于您尝试执行的操作 AFAIK。该元素将根据增加的分数自动移动到正确的位置。然后通过使用其他排序集命令,您可以通过使用元素来模拟从排序集中弹出,如果这是您想要的语义的话。

关于Java:我可以使用Redis db创建优先级队列并根据数据集中键的值设置优先级吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27555663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com