我正在學習如何將Redis用於我的項目。有一件事我沒有得到我的頭是密鑰的名稱是用於密鑰。Redis密鑰中冒號的作用是什麼
我見過的鍵名,如這些:
users:bob
color:blue
item:bag
是否結腸單獨的密鑰進行分類,並找到鑰匙更快?如果是這樣,你可以使用多個冒號命名鍵將它們分解成子類別?最後,他們與在Redis服務器中定義不同的數據庫有什麼關係?
我已經通讀文檔,並做了大量的谷歌搜索這件事,但奇怪的是我找不到任何討論這件事。
我正在學習如何將Redis用於我的項目。有一件事我沒有得到我的頭是密鑰的名稱是用於密鑰。Redis密鑰中冒號的作用是什麼
我見過的鍵名,如這些:
users:bob
color:blue
item:bag
是否結腸單獨的密鑰進行分類,並找到鑰匙更快?如果是這樣,你可以使用多個冒號命名鍵將它們分解成子類別?最後,他們與在Redis服務器中定義不同的數據庫有什麼關係?
我已經通讀文檔,並做了大量的谷歌搜索這件事,但奇怪的是我找不到任何討論這件事。
冒號在早期的redis版本中作爲存儲命名空間數據的概念。在早期版本的Redis只支持字符串,如果你想存儲電子郵件和「鮑勃」的年齡,你必須給它的所有存儲爲一個字符串,所以冒號使用:
SET user:bob:email [email protected]
SET user:bob:age 31
他們有沒有特殊處理或性能特徵,唯一的目的是命名空間數據再次找到它。現在你可以使用散列存儲大部分coloned鍵:
HSET user:bob email [email protected]
HSET user:bob age 31
你不必命名哈希「用戶:鮑勃」,我們可以將其命名爲「鮑勃」,但隨着用戶的前綴命名空間它我們立即知道這個散列應該/可能有哪些信息。
冒號是結構鍵的一種方式。它們不以任何方式被redis解釋。你也可以使用你喜歡的任何其他分隔符,或者根本沒有。我個人更喜歡/
,這使得我的密鑰看起來像文件系統路徑。它們對性能沒有影響,但是你不應該讓它們過長,因爲redis必須將所有的密鑰保存在內存中。
一個好的關鍵結構對於利用sort命令的力量很重要,這是redis對SQL連接的答案。
GET user:bob:color -> 'blue'
GET user:alice:color -> 'red'
SMEMBERS user:peter:friends -> alice, bob
SORT user:peter:friends BY NOSORT GET user:*:color -> 'blue', 'red'
您可以看到,鍵結構使SORT能夠通過引用結構化鍵來查找用戶的顏色。
使用/是一個很好的建議! – 2015-05-01 08:38:20
非常感謝,正是我需要知道的:) – Ryan 2010-08-24 11:43:24
我很想知道爲什麼當''''在這種事情中更常見於各種語言時。 – CivFan 2015-09-08 23:29:51
也許與大多數語言中用於對象訪問的點運算符完全不同 – 2015-09-09 11:10:03