我需要一個數據結構來存儲500k密鑰,每個密鑰都有一些關聯的數據。 150個線程將同時運行&訪問密鑰。一天之後,我需要更新數據結構,因爲可能會有一些操作操作,例如刪除密鑰,添加新密鑰或更改數據。 正在進行數據結構更新時,我無法阻止任何150個線程訪問它。 我不想使用當前的散列實現,如memcache或redis,因爲密鑰的數量可能會在將來增長&我想要內存訪問以加快查找速度?而不是更喜歡C/C++中的一些數據結構實現。鎖少鍵值數據結構
Q
鎖少鍵值數據結構
1
A
回答
1
Userspace RCU庫包含一組藉助於RCU實現的併發數據結構。其中基於文章的無鎖定可調整大小哈希表
- Ori Shalev和Nir Shavit。拆分式排序列表:可鎖定的 可擴展哈希表。 J. ACM 53,3(2006年5月),379-405。
- Michael,M.M.高性能動態無鎖散列表 和基於列表的集合。在第十四屆年度ACM 關於並行算法和體系結構的討論會ACM Press, (2002),73-82中。
欲瞭解更多信息,您可以在http://git.lttng.org/?p=userspace-rcu.git;a=blob;f=rculfhash.c
1
LMDB看到實施意見可以處理這個http://symas.com/mdb/由於它採用MVCC,作家不阻止讀取。你可以更新任何/每當你的150讀者線程將運行得很好。 LMDB讀取不執行任何阻塞操作,並可在任何數量的CPU上完美線性擴展。
(聲明:我是LMDB的作者)
相關問題
- 1. JavaScript中的鍵值數據結構
- 2. Erlang訂購和鍵值數據結構
- 3. 表結構(缺少主鍵)
- 4. JavaScript數據結構:通過鍵值訪問的鍵/值
- 5. 將XML數據(鍵/值對)加載到數據結構中
- 6. 哪個集合/數據結構可以處理鍵值,值
- 7. 基準無鎖與鎖定數據結構的正確方法
- 8. constexpr值的數據結構
- 9. c#中委託數據結構中的+ =/- =均值是多少?
- 10. iPhone plist鍵值結構
- 11. 檢查結構鍵和值
- 12. 多鍵操作數據結構
- 13. Zobrist鍵的高效數據結構
- 14. 哪個數據結構對鍵值對有效?
- 15. 數據結構:Top K排序字典鍵值
- 16. 什麼是多值主鍵對象的好數據結構?
- 17. 多個鍵到一個值數據結構(C)
- 18. 是否有C#數據結構將鍵映射到多個值?
- 19. 允許固定鍵和可編輯值的.NET數據結構。
- 20. Java數據結構:映射重複鍵並按值排序
- 21. 具有1:1鍵/值映射的C#集合數據結構
- 22. 排序的鍵值對的Python數據結構
- 23. 如何弄平嵌套JSON數據結構與鍵值對
- 24. Java數據結構,使用該值作爲關鍵
- 25. 最適合用於鍵值對評估的數據結構
- 26. 數據結構只保存鍵(不關心值)
- 27. MySQL中有多個鍵值的數據結構
- 28. Java中是否存在單鍵和多值數據結構?
- 29. 如何獲取perl數據結構中的所有鍵值?
- 30. 將JSON鍵:扁平結構中的值對變換爲鍵:值樹結構
的簡單方法是存儲在數據庫中的密鑰和需要時閱讀的關鍵。 – Ali786
如果更新一天只進行一次,爲什麼不復制 - 修改 - 替換(交換)?也就是說,使它不可變。 – 9dan