gpt4 book ai didi

ruby - 如何在redis中对这个ruby结构建模

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

我正在考虑使用 redis ( http://code.google.com/p/redis/ )来存储这种 ruby​​ 数据结构。

假设这样:

node1server1 = { "volume1" => 10400, "volume2" => 11221, "volume3" => 13212, "volume4" => 17227 }
node1server2 = { "volume1" => 17450, "volume2" => 14241, "volume3" => 15512, "volume4" => 12427 }

node2server1 = { "volume1" => 17655, "volume2" => 16754, "volume3" => 19877, "volume4" => 10000 }
node2server2 = { "volume1" => 11456, "volume2" => 13776, "volume3" => 18766, "volume4" => 16555 }

什么是更好的 redis 数据类型?

需要更新数据,需要对node1server1+node1server2和node2server1+node2server2的值进行排序。

最佳答案

我可以看到您发布已经有一段时间了,但是您能否提供更多有关如何对数据进行排序的信息?

此外,我在下面假设每个服务器的卷数可能不定,每个节点的服务器数可能不定

一种方法如下:

node_id:1:server_id:1:volume_id:1 = 10400
node_id:1:server_id:1:volume_id:2 = 11221
node_id:1:server_id:1:volume_id:3 = 13212
node_id:1:server_id:1:volume_id:4 = 17227
node_id:1:server_id:2:volume_id:1 = 17450
node_id:1:server_id:2:volume_id:1 = 14241
...
node_id:1:volumes = SET("server_id:1:volume_id:1", "server_id:1:volume_id:2", "server_id:1:volume_id:3", "server_id:1:volume_id:4", "server_id:2:volume_id:1", "server_id:2:volume_id:2", "server_id:2:volume_id:3", "server_id:2:volume_id:4")

因此,要获取节点 1 的所有卷编号的排序列表:

SORT node_id:1:volumes BY node_id:1:*

...这将按分配给每个节点的值和 node_id:1:volumes 的排序版本进行排序。

或者,您可以使用 Redis 1.1 中新增的 ZSET

另请注意,我在这里使用的是 SET,而不是 LIST。我发现 LIST 对于用队列和堆栈描述的结构更有用,而 SET 对于唯一项的列表更好。

引用资料:

关于ruby - 如何在redis中对这个ruby结构建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1785134/

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