我需要在我正在编写的node.js应用程序中存储一些元数据。我想使用进程内持久键值存储,而不是提出自己的文件格式并管理该文件。
我正在看mongodb,但似乎mongodb必须始终在进程外运行(也就是说,你需要先启动一个mongo服务器,然后在node.js.中连接它。)我要求任何商店也就是说,它完全存在于node.js进程中 - 或者至少任何外部进程完全由库透明地管理,并在应用程序关闭连接时终止它们。
我不太关心性能,但是支持异步IO到商店以跟上Node的整个异步事件会很好。
如果商店支持索引也会很好,因为我肯定会以索引有用的方式查询数据。
我很确定'sqlite'对我有用,除了我没有真正看到它像键值存储一样方便。理想情况下,我应该能够用JSON说话,而不是SQL。但是如果没有更好的存在,sqlite将会起作用。
谢谢!
答案 0 :(得分:3)
尝试nStore。
https://github.com/creationix/nstore
它正在处理键值存储。使用简单。
答案 1 :(得分:3)
看看https://github.com/sergeyksv/tingodb。它与MongoDB API紧密兼容,因此您可以在需要时升级到MongoDB。
答案 2 :(得分:2)
您可能对使用redis http://redis.io/
感兴趣节点https://github.com/mranney/node_redis
有一个流行的帮助程序库然后你可以这样做:
var redis = require("redis");
var client = redis.createClient();
client.set("foo_rand000000000000", "OK");
答案 3 :(得分:1)
我想你可能对final-db感兴趣。
FinalDB使用文件系统来存储它的数据。它不是键值存储,而是基于文档的 nosql解决方案。它支持索引(地图) - 您可以在每个集合上指定地图功能,当然它是正在进行中解决方案。
答案 4 :(得分:0)
看看levelup。这是leveldb的包装器。 levelup包装器通过npm安装leveldb并完全在你的节点进程中运行。
在leveldb之上构建了许多数据库。请查看https://github.com/rvagg/node-levelup/wiki/Modules以获取列表。
为方便起见,您可以使用同时捆绑levelup和leveldown的level包
答案 5 :(得分:-1)
怎么样......
var store = { };
//store 'myKey'
store.myKey = { foo: 'bar' };
//fetch 'myKey'
var x = store.myKey;
此外,谷歌搜索几乎完全是你的问题标题,你会发现http://pgte.github.com/alfred/
我真的不认为有很多特别稳定的可用。虽然外部产品非常好(例如Redis)