Redis密钥结构

时间:2015-04-16 16:27:50

标签: redis

在Redis中创建密钥时,我使用":"格式化并将其视为与URL结构类似。

但是,如果该结构本身包含键值类型组合呢?有人把钥匙放在结构中吗?

制作示例:

选项A)"国家:美国:制造商:福特:车辆:f150:颜色" =黑色

选项B)" usa:ford:f150:color" =黑色

在某些方面,我认为选项A的结构有实力,但它也给关键增加了很多复杂性。

思想?

1 个答案:

答案 0 :(得分:1)

虽然记住你的例子(尝试使用一个实际的例子,你会得到更好的答案)我不得不说。

我会使用ID作为密钥,可能是int。然后我将每个键/值对作为哈希成员和值放在您的选项A中。

例如:

HSET 1 country USA

HSET 1 manufacturer ford

等等。或者您可以使用hmset操作一次性设置它们。

为什么呢?您可以将字段保持为描述数据(在选项b中丢失),哈希对字符串的内存优势以及关键结构的复杂性降低,更不用说短整数作为键名对比的内存优势了一根长串。

此外,您可以通过内存便宜的方式将索引创建为整数集。例如,一个名为“country:1”的密钥可以是一组条目ID,然后为您提供“拉出国家ID 1的所有条目”的方法 - 示例中为USA。通过使用整数,您可以以一种非常高效的内存方式存储这些内容,而且查找表的成本较低。这甚至可以在lua中完成以避免网络跳跃。

可能的组合和条目范围越大,节省的内存就越有价值。如果你有数百万甚至数十亿,你会想要遵循整数ID&查找路线。如果你需要分片数据 - 服务器端或客户端,这也可以很好地设置你。