flat-file-db

快速的进程内平面文件数据库,将所有数据缓存在内存中。(Fast in-process flat file database that caches all data in memory)

Github stars Tracking Chart

flat-file-db

Fast in-process flat file database for Node.js that supports JSON and caches all data in memory.
All data is persisted to an open file using a append-only algorithm ensuring compact file sizes and strong consistency.

npm install flat-file-db

build status

Usage

Pass a database file to use to the flat-file-db constructor and wait for the database to open.
When it is open all data has been loaded into memory.

var flatfile = require('flat-file-db');
var db = flatfile('/tmp/my.db');

db.on('open', function() {
	db.put('hello', {world:1});  // store some data
	console.log(db.get('hello')) // prints {world:1}

	db.put('hey', {world:2}, function() {
		// 'hey' is now fully persisted
	});
});

If you don't want to wait for it to open use flatfile.sync

var db = flatfile.sync('/tmp/my.db');
console.log(db.get('hello')); // prints {world:1}

If you issue multiple writes the last one will always win

for (var i = 0; i < 10; i++) {
	db.put('test', {count:i}, ...);
}
console.log(db.get('test')); // {count:9} which also the persisted value of 'test'

API

  • db = flatfile(path, opts) Create a new db instance. Per default fsync is called on all puts. To disable this set opts.fsync = false

  • db = flatfile.sync(path, opts) Same as above except you do not need to wait for the open event

  • db.put(key, val, [cb]) Insert or update new key

  • db.del(key, [cb]) Delete a key

  • db.get(key) -> doc Get the value of a key

  • db.has(key) -> bool True if db has key

  • db.keys() -> list Get all keys as an array

  • db.clear([cb]) Clears the database of all values

  • db.close() Close the database

Events

  • db.on('open') Fired when the db is open and ready for use.

  • db.on('close') Fired when the db is fully closed

  • db.on('drain') All puts and deletes are flushed to disk

License

MIT

Main metrics

Overview
Name With Ownermafintosh/flat-file-db
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 1)
PlatformLinux, Mac, Windows
License:
所有者活动
Created At2013-12-13 00:01:58
Pushed At2017-04-08 18:53:47
Last Commit At2016-05-22 09:51:34
Release Count7
Last Release Namev1.0.0 (Posted on 2016-05-22 09:38:12)
First Release Namev0.1.0 (Posted on 2013-12-13 01:01:56)
用户参与
Stargazers Count196
Watchers Count10
Fork Count15
Commits Count34
Has Issues Enabled
Issues Count6
Issue Open Count2
Pull Requests Count2
Pull Requests Open Count2
Pull Requests Close Count0
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private