我需要快速可靠的 Ruby 键值对存储。已经有类似的东西了吗?
要求是它完全在 Ruby 进程内运行,不需要任何外部进程。
它可能在内存中,具有显式磁盘刷新。
它需要最小的键值检索时间,写入时间可能不太好。
存储的数据量不会很糟糕,大约几十万个键,每个键都有 ~1kb 的文本值。
事实证明,对我来说最好的选择是使用普通 Hash 和 Marshal 将其序列化到磁盘。
对于这么多对象,YAML 肯定太慢了。
感谢@ian-armit 加强了我对核心 Ruby 库的信任。
您还可以尝试Moneta,它允许您构建嵌入在 ruby 进程中的自己的键/值存储。
喜欢 DBM? http://www.ruby-doc.org/stdlib-1.9.3/libdoc/dbm/rdoc/DBM.html
(垃圾邮件机器人的填充物)
DBM 类为 Unix 风格的 dbm 或数据库管理器库提供了一个包装器。
Dbm 数据库没有表或列;它们是简单的键值数据存储,就像 Ruby 哈希一样,但不驻留在 RAM 中。键和值必须是字符串。
你可以试试 Oria:https ://github.com/intridea/oria
Oria (oh-rye-uh) 是一个内存中的、基于 Ruby 的零配置键值存储。它旨在快速轻松地处理中等数量的数据,而不会导致部署问题或服务器问题。它使用 EventMachine 为半持久存储提供网络接口,并将内存中的数据异步写入 YAML 文件。
有LevelDB,这里有ruby bindings。
查看PStore。但不确定它是否足够快。