2015-04-16 71 views
0

在Redis中创建密钥时,我使用“:”格式并将其类似于URL结构。Redis关键结构

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

制造的例子:

选项A) “国家:美国:制造商:福特:车辆:F150:颜色”=黑

选项B)“美国:福特: f150:颜色“=黑色

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

想法?

+0

完全由你决定,但1)除非用于定位密钥,否则不要将数据放在密钥的名称中,2)密钥名称越长,需要的RAM就越多。 –

回答

1

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

我会去与密钥的ID,可能是int。那么我会把你的选项A中的每个键/值对作为散列成员和值。

例如:

HSET 1 country USA

HSET 1 manufacturer ford

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

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

此外,你有一个内存便宜的方式来创建索引作为整数集。例如,一个名为“country:1”的密钥可以是一组条目ID,然后为您提供一种“拉出国家ID 1的所有条目”的方法 - 例如美国。通过使用整数,您可以以一种非常有效的内存方式存储这些全部内容,并且只需花费很少的代价就可以查找表。这甚至可以在lua中完成,以避免网络跳跃。

可能的组合和条目的范围越大,节省的内存就越有价值。如果您拥有数百万或数十亿个,则需要遵循整数ID &查找路线。如果你需要分割数据 - 无论是服务器端还是客户端,这也将很好地设置你。