0
什麼是在Redis中保留大型列表(例如10K項目)的最佳方式,我也希望通過密鑰高效地檢索項目。REDIS:隨機訪問列表
看起來Redis沒有與Java的OrderedHashMap等價的數據結構,因此可能需要維護一個集合和一個列表並確保它們保持同步。
什麼是在Redis中保留大型列表(例如10K項目)的最佳方式,我也希望通過密鑰高效地檢索項目。REDIS:隨機訪問列表
看起來Redis沒有與Java的OrderedHashMap等價的數據結構,因此可能需要維護一個集合和一個列表並確保它們保持同步。
使用排序集;
添加一些書籤;使用當前時間score
按時間順序進行排序:
> zadd bookmarks 123 "bk1"
> zadd bookmarks 456 "bk2"
> zadd bookmarks 789 "bk3"
> zadd bookmarks 999 "bk4"
爲了得到一個書籤,你需要的指數第一:
> zrevrange bookmarks 3 3
> "bk3"
:
> zrank bookmarks "bk3"
> "3"
...然後通過指數拉書籤
如果你不想使用時間戳,你可以按照字典順序使用「1」對書籤進行排序:
> zadd bookmarks 1 "link_xyz"
> zadd bookmarks 1 "link_abc"
> zadd bookmarks 1 "link_foo"
> zrange bookmarks 0 -1
1) "link_abc"
2) "link_foo"
3) "link_xyz"
索引查找是O(log(n))
,添加到該O(log(n)+1)
按索引拉單個成員;列表優於O(n)
。另外,如果您添加相同的書籤兩次,redis將自動替換之前的成員,這樣可以避免重複。
希望它有幫助,
什麼是項目? – raffian
一個例子就像書籤一樣。我想保留用戶的書籤列表,但同時檢測用戶是否已經爲給定的項目添加了書籤。通過定期列表,該檢查將是O(N)操作。 – mahemoff