我想在我的python應用程序中與rocksdb進行交互,並在其中存儲任意的字典。我收集這些信息是爲了我可以使用類似pickle的東西來進行序列化。但我需要能夠根據其鍵的值過濾記錄。這裏有什麼合適的方法?如何通過字典鍵值促進字典記錄過濾?
1
A
回答
1
讓我們假設您有一個名爲dict_keys
的鍵的列表,並且您有一個名爲big_dict
的字典,並且您只想過濾掉dict_keys
中的值。
new_dict = {key: big_dict.get(key) for key in dict_keys}
+0
這是否意味着每個記錄都將被反序列化? –
0
RocksDB是一個key-value存儲,並且兩個鍵和值是二進制字符串:如果真的存在這樣您可以編寫遍歷列表從字典抓住項目的字典理解。
- 如果您想按給定鍵進行過濾,只需使用
Get
接口來搜索數據庫。 - 如果要按給定的鍵模式進行篩選,則必須使用
Iterator
接口迭代整個DB,並使用與該模式匹配的鍵篩選記錄。 - 如果要按值或值模式進行過濾,則仍需要迭代整個數據庫。對於每個鍵 - 值對,反序列化該值,並檢查它是否等於給定值或匹配給定模式。
對於情況1
和案例2
,你不需要反序列化的所有值,但只有珍視等於給予重點或匹配的模式。但是,對於案例3
,您必須反序列化所有值。
這兩種情況下2
和案件3
是效率低下,因爲他們需要迭代整個密鑰空間。
您可以配置RocksDB的密鑰進行排序,並且RocksDB對前綴索引有很好的支持。所以你可以通過密鑰高效地進行範圍查詢和前綴查詢。查看文檔以獲取詳細信息。
爲了高效地進行值過濾/搜索,您必須使用RocksDB創建一個值索引。
相關問題
- 1. 如何通過鍵合併字典值?
- 2. 如何通過其他字典過濾python字典?
- 3. 過濾字典的字典
- 4. 過濾字典
- 5. 過濾字典
- 6. 過濾字典由值
- 7. 通過按鍵在字典
- 8. 鍵值對,通過字典循環vba
- 9. 通過值獲取鍵,在字典中
- 10. 通過字典
- 11. 通過獨特的字典來過濾字典數組清潔路值
- 12. 如何通過字典
- 13. 通過字典訪問值
- 14. ,通過匹配字典值
- 15. 如何通過另一個字典獲得字典值?
- 16. 如何通過索引值尋找字典的關鍵字?
- 17. 使用字典鍵過濾列表
- 18. 基於字典鍵過濾NSMutableArray
- 19. 過濾公共子字典鍵
- 20. C#通過字典
- 21. KeyNotFoundException通過字典
- 22. 如何過濾只留下唯一字典的字典列表
- 23. 過濾由值的字典,在亞字典與一個UISearchBar
- 24. 通過比較NSArray中的字典對象進行過濾
- 25. 過濾掉從字典
- 26. 過濾字典+元組
- 27. 過濾特定字典
- 28. 過濾基於從字典
- 29. 在Swift中過濾字典
- 30. 在swift中過濾字典
任意。口述可能有不同的鍵。 –