Redis 在哈希中存储列表
Redis storing list inside hash
我必须在 redis 中存储一些机器详细信息。由于有许多不同的机器,我计划使用以下结构
server1 => {name => s1, cpu=>80}
server2 => {name => s2, cpu=>40}
我需要针对键 CPU 存储多个值。此外,我只需要维护 cpu
值列表中的最后 10 个值
1) 我如何根据散列中的键存储列表?
2) 我阅读了有关 ltrim 的内容。但它接受一把钥匙。我如何为 server1 中的键 cpu 执行 ltrim?
我正在使用绝地武士
Redis 的数据结构不能嵌套在其他数据结构中,因此无法将 List 存储在 Hash 中。相反,为服务器的 CPU 值使用不同的键(例如 server1:cpu
)。
使用 Redisson 框架可以做到这一点。它允许通过由 Redisson 处理的特殊引用对象将对 Redis 对象的引用存储在另一个 Redis 对象中。
所以您的任务可以使用 List inside Map 解决:
RMap<String, RList<Option>> settings = redisson.getMap("settings");
RList<Option> options1 = redisson.getList("settings_server1_option");
options1.add(new Option("name", "s1"));
options1.add(new Option("cpu", "80"));
settings.put("server1", options1);
RList<Option> options2 = redisson.getList("settings_server2_option");
options2.add(new Option("name", "s2"));
options2.add(new Option("cpu", "40"));
settings.put("server2", options2);
// read it
RList<Option> options2Value = settings.get("server2");
或者在 Map 中使用 Map:
RMap<String, RMap<String, String>> settings = redisson.getMap("settings");
RMap<String, String> options1 = redisson.getMap("settings_server1_option");
options1.put("name", "s1");
options1.put("cpu", "80");
settings.put("server1", options1);
RMap<String, String> options2 = redisson.getMap("settings_server2_option");
options2.put("name", "s2");
options2.put("cpu", "40");
settings.put("server2", options1);
// read it
RMap<String, String> options2Value = settings.get("server2");
您可以encode/stringify 推送数据,同时可以decode/parse 拉取数据。
Encode -> Decode
Stringify -> Parse
我必须在 redis 中存储一些机器详细信息。由于有许多不同的机器,我计划使用以下结构
server1 => {name => s1, cpu=>80}
server2 => {name => s2, cpu=>40}
我需要针对键 CPU 存储多个值。此外,我只需要维护 cpu
值列表中的最后 10 个值1) 我如何根据散列中的键存储列表?
2) 我阅读了有关 ltrim 的内容。但它接受一把钥匙。我如何为 server1 中的键 cpu 执行 ltrim?
我正在使用绝地武士
Redis 的数据结构不能嵌套在其他数据结构中,因此无法将 List 存储在 Hash 中。相反,为服务器的 CPU 值使用不同的键(例如 server1:cpu
)。
使用 Redisson 框架可以做到这一点。它允许通过由 Redisson 处理的特殊引用对象将对 Redis 对象的引用存储在另一个 Redis 对象中。
所以您的任务可以使用 List inside Map 解决:
RMap<String, RList<Option>> settings = redisson.getMap("settings");
RList<Option> options1 = redisson.getList("settings_server1_option");
options1.add(new Option("name", "s1"));
options1.add(new Option("cpu", "80"));
settings.put("server1", options1);
RList<Option> options2 = redisson.getList("settings_server2_option");
options2.add(new Option("name", "s2"));
options2.add(new Option("cpu", "40"));
settings.put("server2", options2);
// read it
RList<Option> options2Value = settings.get("server2");
或者在 Map 中使用 Map:
RMap<String, RMap<String, String>> settings = redisson.getMap("settings");
RMap<String, String> options1 = redisson.getMap("settings_server1_option");
options1.put("name", "s1");
options1.put("cpu", "80");
settings.put("server1", options1);
RMap<String, String> options2 = redisson.getMap("settings_server2_option");
options2.put("name", "s2");
options2.put("cpu", "40");
settings.put("server2", options1);
// read it
RMap<String, String> options2Value = settings.get("server2");
您可以encode/stringify 推送数据,同时可以decode/parse 拉取数据。
Encode -> Decode
Stringify -> Parse