node.js的进程内持久键值存储

时间:2012-05-02 08:41:34

标签: node.js

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

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

我不太关心性能,但是支持异步IO到商店以跟上Node的整个异步事件会很好。

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

我很确定'sqlite'对我有用,除了我没有真正看到它像键值存储一样方便。理想情况下,我应该能够用JSON说话,而不是SQL。但是如果没有更好的存在,sqlite将会起作用。

谢谢!

6 个答案:

答案 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)