Redis哈希键和字段的可互换性如何?

Redis哈希键和字段的可互换性如何?,redis,Redis,我计划以以下方式使用Redis哈希作为地图地图: [版本->[密钥->序列化数据]] 应用程序和数据设计建议使用Redis键作为版本,使用Redis字段作为键。在我们的例子中,这意味着只存储几十个Redis密钥,每个密钥包含数千万个字段 与Redis文档中的用例场景似乎不对称。简单的get/set/delete操作在性能方面可以吗?不会使用密钥过期和其他Redis高级技术。您当然可以使用哈希数据结构以这种方式存储数据。与仅使用简单的KV串(即,版本:key作为键,数据作为值)相比,该设计增加了一

我计划以以下方式使用Redis哈希作为地图地图:
[版本->[密钥->序列化数据]]

应用程序和数据设计建议使用Redis
作为版本,使用Redis
字段
作为键。在我们的例子中,这意味着只存储几十个Redis密钥,每个密钥包含数千万个字段


与Redis文档中的用例场景似乎不对称。简单的get/set/delete操作在性能方面可以吗?不会使用密钥过期和其他Redis高级技术。

您当然可以使用哈希数据结构以这种方式存储数据。与仅使用简单的KV串(即,
版本:key
作为键,
数据
作为值)相比,该设计增加了一个额外的操作来获取/设置每个字段的值。OTOH,通过使用简单的字符串KV,您最终将拥有很多(几十倍于千万)键,每个键的开销都比您建议的方法要大(在同一时间更多)

也就是说,散列方法是有效的,并且被广泛使用。由于额外操作造成的性能损失通常可以忽略不计,特别是考虑到节省空间


注意:您的问题没有指定为什么/如何获取序列化数据。您需要获取给定版本下的所有密钥吗?可能是给定密钥的所有版本?二者都其他的?根据您的用例要求,可能会有更好的替代方案。

您好,谢谢!说到用法,我只需要a)计算给定版本的所有密钥,b)删除某个版本的所有数据(密钥和序列化对象)。无键遍历、搜索操作等。计算哈希值很便宜,但对删除大型哈希值感到厌倦-对任何对象(集合、排序集合和列表)进行批量计算,删除对象越大,所需时间越长