我需要一个数据结构来存储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