5

我需要在我正在编写的 node.js 应用程序中存储一些元数据。我不想提出自己的文件格式并管理该文件,而是想使用进程内持久键值存储。

我正在查看 mongodb,但似乎 mongodb 必须始终在进程外运行(也就是说,您需要先启动一个 mongo 服务器,然后在 node.js 中连接到它。)我要求无论这是什么存储,它完全存在于 node.js 进程中——或者至少任何外部进程都完全由库透明地管理,并在应用程序关闭连接时终止它们。

我不太关心性能,但支持异步 IO 到存储以跟上 Node 的整个异步操作会很好。

如果商店支持索引也很好,因为我肯定会以索引有用的方式查询数据。

我很确定“sqlite”对我有用,只是我真的认为它不像键值存储那样方便。理想情况下,我应该能够用 JSON 说话,而不是 SQL。但是如果没有更好的存在,sqlite 将起作用。

谢谢!

4

6 回答 6

3

试试 nStore。
https://github.com/creationix/nstore

它正在进行键值存储。使用也很简单。

于 2013-03-27T13:37:30.473 回答
3

看看https://github.com/sergeyksv/tingodb。它与 MongoDB API 紧密兼容,因此您可以在需要时升级到 MongoDB。

于 2013-06-07T14:15:05.133 回答
2

你可能有兴趣使用 redis http://redis.io/

有一个流行的节点助手库https://github.com/mranney/node_redis

然后你可以这样做:

var redis = require("redis");
var client = redis.createClient();

client.set("foo_rand000000000000", "OK");
于 2012-05-02T09:23:09.410 回答
1

我想你可能对final-db感兴趣。

FinalDB 使用文件系统来存储它的数据。它不是键值存储,而是基于文档的nosql 解决方案。它支持索引(地图) - 您可以在每个集合上指定地图功能,当然它是一个进程中的解决方案。

于 2013-09-03T15:27:10.403 回答
0

看看升级。这是leveldb的包装。levelup 包装器通过 npm 安装 leveldb 并完全在您的节点进程中运行。

有许多建立在 leveldb 之上的数据库。查看https://github.com/rvagg/node-levelup/wiki/Modules以获取列表。

为方便起见,您可以使用将levelup 和 leveldown 捆绑在一起的level包

于 2014-05-02T21:11:13.470 回答
-1

怎么样...

var store = { };

//store 'myKey'
store.myKey = { foo: 'bar' };

//fetch 'myKey'
var x = store.myKey;

此外,谷歌搜索几乎完全是你的问题标题,你会发现http://pgte.github.com/alfred/

我真的不认为有很多特别稳定的可用。不过,外部产品非常好(例如 Redis)

于 2012-05-02T09:05:39.910 回答