2012-07-25 51 views
0

我有一個下面的模型是正確的選擇:Redis的是這個模型

| string (unique key) | about 10 other strings, that have all a fixed length and may be empty | 

在常用查詢使用獨特的鍵,看到其他琴絃「。使用Redis應該沒問題。

但另一個查詢是'顯示列n爲空的鍵'。我不確定Redis是否可以處理這種性能!

回答

1

要在redis中解決這個問題,您需要維護一些元數據。一種解決方案是爲每個「列」添加一個設置類型鍵,該列將保存「列」爲空的所有元素的唯一鍵。顯然,在您的應用程序邏輯中,當您在主散列中添加和刪除值時,您需要添加和刪除這些集合中的唯一鍵。這將是非常快的,因爲設置操作sadd,sremsismember對於單個項目(即,不與組的大小成比例)全部是O(1)。要獲得「列」爲空的所有鍵,可以使用smembers。至少,這就是我解決類似問題的方法。

(我把周圍的列引號,因爲在Redis的模型,他們將哈希領域,不列作爲您在RDBMS認爲他們)

+0

感謝。 O(1)聽起來很完美!你認爲Redis是這個問題的不錯選擇嗎? – Mark 2012-07-26 18:20:28

+1

真的取決於你的問題。 redis和RDBMS之間的折衷是靈活的存儲與靈活的查詢。在redis中,很難在任意字段上查詢 - 您可能需要獲取所有內容並在應用中進行篩選,或者像我在答案中描述的那樣構建索引。另一方面,添加字段非常容易,甚至只在某些項目上存在的字段。真的取決於你需要靈活性的地方。我喜歡使用它,但是我確實有大量的代碼來維護各種過濾和排序的索引。 – 2012-07-26 18:49:32

相關問題