我已經創建了一個Redis的鍵/值指數是這樣的:獲取Redis的值,同時掃描
set 7:12:321 '{"some:"JSON"}'
的關鍵是一個冒號分隔符分隔的,關鍵的每一部分表示一個分層索引。 get 7:12:321
意味着,我知道確切的層次結構,並只需要一個單一的項目
scan 7:12:*
意味着我想在層次結構和id 12的分層結構的第二層中的第一電平下ID 7的每個項目。
問題是:如果我想要JSON值,我必須首先scan
(〜50000條目在幾個毫秒內)然後get
每個按鍵(800毫秒)掃描返回。
這不是非常有效。這是我在stackoverflow搜索「掃描Redis值」時發現的唯一答案。
1 /是否有另一種掃描Redis的方式來獲取值或鍵/值對,而不僅僅是鍵?我試圖hscan
具有如下:
hset myindex 7:12:321 '{"some:"JSON"}' hscan myindex MATCH 7:12:*
但它破壞了性能(50000項幾乎4S)
2 /是否有Redis的另一種數據結構,我可以以同樣的方式使用,但可能「掃描值「(hset
?)
3 /我應該去與另一個數據存儲解決方案(例如PostgreSQL的ltree
?),以適應我的用例與巨大的性能?
我一定錯過了一些非常明顯的東西,因爲這聽起來像是一個常見的用例。
感謝您的回答。
非常感謝您的回答。得分的解決方案非常聰明。我必須去適應它,因爲層級鍵並不像我在我的問題中提到的那樣真正地被組織爲「純粹的」(我簡化了)。但是這個想法絕對值得嘗試。與此同時,我發現文檔中的'mget'我可以看到改進,但是,當然,不如您的解決方案聰明;)謝謝! – Javier92
@ Javier92我發現原始解決方案存在一些小問題。請參閱我的解決方案更新。 –
不要擔心,第一部分+密鑰的最後部分會生成唯一的標識符。中間的部分僅用於索引目的。所以創建一些獨特的json字段很容易。 – Javier92