在Redis中创建密钥时,我使用“:”格式并将其类似于URL结构。Redis关键结构
但是如果该结构本身包含键值类型组合呢?有人把钥匙放在结构中吗?
制造的例子:
选项A) “国家:美国:制造商:福特:车辆:F150:颜色”=黑
或
选项B)“美国:福特: f150:颜色“=黑色
在某些方面,我认为选项A的结构有很强的力量,但它也增加了关键的复杂性。
想法?
在Redis中创建密钥时,我使用“:”格式并将其类似于URL结构。Redis关键结构
但是如果该结构本身包含键值类型组合呢?有人把钥匙放在结构中吗?
制造的例子:
选项A) “国家:美国:制造商:福特:车辆:F150:颜色”=黑
或
选项B)“美国:福特: f150:颜色“=黑色
在某些方面,我认为选项A的结构有很强的力量,但它也增加了关键的复杂性。
想法?
在记住你的制作的例子的时候(尝试使用一个实际的例子,你会得到更好的答案),我不得不说。
我会去与密钥的ID,可能是int。那么我会把你的选项A中的每个键/值对作为散列成员和值。
例如:
HSET 1 country USA
HSET 1 manufacturer ford
等。或者您可以使用hmset操作一次设置它们。
为什么?您可以将字段保持为描述数据(在选项b中丢失的字段),字符串散列的内存优势以及降低关键结构的复杂性,更不用说将短整数作为关键字与长串。
此外,你有一个内存便宜的方式来创建索引作为整数集。例如,一个名为“country:1”的密钥可以是一组条目ID,然后为您提供一种“拉出国家ID 1的所有条目”的方法 - 例如美国。通过使用整数,您可以以一种非常有效的内存方式存储这些全部内容,并且只需花费很少的代价就可以查找表。这甚至可以在lua中完成,以避免网络跳跃。
可能的组合和条目的范围越大,节省的内存就越有价值。如果您拥有数百万或数十亿个,则需要遵循整数ID &查找路线。如果你需要分割数据 - 无论是服务器端还是客户端,这也将很好地设置你。
完全由你决定,但1)除非用于定位密钥,否则不要将数据放在密钥的名称中,2)密钥名称越长,需要的RAM就越多。 –