FalkorDBLite for TypeScript
FalkorDBLite for Node.js/TypeScript launches an embedded redis-server with the FalkorDB module and returns a connected FalkorDB client. It is ideal for local development, demos, CI jobs, or small apps that want a zero-config graph database that starts and stops with the application.
Requirements
- Node.js 20 or later
- Ability to download the FalkorDB module during
npm install - Linux x64 and macOS arm64 are supported; Windows users should run under WSL2 or use a remote server
Installation
npm install falkordblite
# Optional: also install the remote client when you plan to connect to an external server
npm install falkordb
Quick start
import { FalkorDB } from 'falkordblite';
const db = await FalkorDB.open();
const graph = db.selectGraph('quickstart');
await graph.query('CREATE (p:Person {name: "Ada"})');
const result = await graph.roQuery('MATCH (p:Person) RETURN p.name');
console.log(result.data); // => [ [ 'Ada' ] ]
await db.close();
Persist data between runs
Provide a path to keep data on disk. When set, FalkorDBLite enables periodic snapshots automatically.
const db = await FalkorDB.open({ path: '/tmp/falkordb-lite' });
const graph = db.selectGraph('inventory');
await graph.query('CREATE (:Product {id: 1, name: \"Laptop\"})');
await db.close();
Work with multiple graphs
Use separate graph IDs to isolate datasets within the same embedded instance.
const db = await FalkorDB.open();
const users = db.selectGraph('users');
const orders = db.selectGraph('orders');
await users.query('CREATE (:User {id: 1, email: \"a@example.com\"})');
await orders.query('CREATE (:Order {id: 10, total: 99.5})');
await db.close();
Configuration options
Set options on FalkorDB.open() to control the embedded server:
| Option | Type | Default | Purpose |
|---|---|---|---|
path |
string |
temporary directory | Data directory; enables persistence and snapshots. |
redisServerPath |
string |
auto | Use a custom redis-server binary. |
modulePath |
string |
auto | Use a custom FalkorDB module (.so) path. |
maxMemory |
string |
unset | Redis maxmemory, e.g. "256mb". |
logLevel |
'debug' \| 'verbose' \| 'notice' \| 'warning' |
unset | Redis log level. |
logFile |
string |
standard output | Where the embedded server logs. |
timeout |
number |
10000 |
Startup timeout in milliseconds. |
additionalConfig |
Record<string, string> |
none | Extra redis.conf entries (e.g. { port: '6379' }). |
falkordbVersion |
string |
v4.16.3 |
FalkorDB module release tag to download. |
inheritStdio |
boolean |
false |
Pipe redis-server output to the parent process. |
The FalkorDB client returned by selectGraph() exposes the full FalkorDB Graph API (query, roQuery, indexes, constraints, profiling, etc.).
Migrate to a remote FalkorDB server
Keep your graph logic and swap only the connection line:
// Embedded
import { FalkorDB } from 'falkordblite';
const db = await FalkorDB.open();
// Remote
import { FalkorDB as RemoteFalkorDB } from 'falkordb';
const remote = await RemoteFalkorDB.connect({
socket: { host: '127.0.0.1', port: 6379 },
});