在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就越多。 –