LMDB class
A high-level Dart interface for LMDB (Lightning Memory-Mapped Database).
LMDB provides a Dart-friendly API for interacting with LMDB, featuring:
- Automatic transaction management
- UTF-8 string support
- Named databases
- Comprehensive statistics and analysis
Basic usage:
final db = LMDB();
// Initialize the database
await db.init('/path/to/db');
// Store some data
await db.putUtf8Auto('key', 'value');
// Retrieve data
final value = await db.getUtf8Auto('key');
print(value); // Prints: value
// Clean up
db.close();
Advanced usage with explicit transactions:
final db = LMDB();
await db.init('/path/to/db');
final txn = await db.txnStart();
try {
await db.putUtf8(txn, 'key1', 'value1');
await db.putUtf8(txn, 'key2', 'value2');
await db.txnCommit(txn);
} catch (e) {
await db.txnAbort(txn);
rethrow;
}
Constructors
- LMDB.new()
- Creates a new LMDB instance and loads the native library.
Properties
-
env
→ Pointer<
MDB_env> -
Safe accessor for the environment pointer
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
- isInitialized → bool
-
Checks if the database has been initialized.
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
analyzeUsage(
) → Future< String> - Analyzes current database usage and returns a formatted report.
-
close(
) → void - Closes the database and releases all resources.
-
cursorClose(
Pointer< MDB_cursor> cursor) → void - Closes a cursor
-
cursorCount(
Pointer< MDB_txn> txn, {String? dbName}) → Future<int> - Helper method to count entries using a cursor
-
cursorDelete(
Pointer< MDB_cursor> cursor, [int flags = 0]) → Future<void> - Deletes the entry at current cursor position
-
cursorGet(
Pointer< MDB_cursor> cursor, List<int> ? key, CursorOp operation) → Future<CursorEntry?> - Positions cursor and retrieves data
-
cursorOpen(
Pointer< MDB_txn> txn, {String? dbName}) → Future<Pointer< MDB_cursor> > - Opens a new cursor for the specified database
-
cursorPut(
Pointer< MDB_cursor> cursor, List<int> key, List<int> value, int flags) → Future<void> - Stores data at current cursor position
-
cursorPutUtf8(
Pointer< MDB_cursor> cursor, String key, String value, [int flags = 0]) → Future<void> - Convenience method to store UTF-8 strings using cursor
-
delete(
Pointer< MDB_txn> txn, String key, {String? dbName, LMDBFlagSet? flags}) → Future<void> - Deletes a value from the database.
-
deleteAuto(
String key, {String? dbName}) → Future< void> - Deletes a value with automatic transaction management.
-
dispose(
) → void - Cleans up resources and closes the database.
-
get(
Pointer< MDB_txn> txn, String key, {String? dbName, LMDBFlagSet? flags}) → Future<List< int> ?> - Retrieves a raw byte value from the database.
-
getAllDatabaseStats(
) → Future< Map< String, DatabaseStats> > - Gets statistics for all databases in the environment.
-
getAuto(
String key, {String? dbName}) → Future< List< int> ?> - Retrieves a raw byte value with automatic transaction management.
-
getEnvironmentStats(
) → Future< DatabaseStats> - Gets environment-wide statistics
-
getErrorString(
int err) → String - Gets a human-readable error string for an LMDB error code.
-
getStats(
{String? dbName}) → Future< DatabaseStats> - Gets statistics for a database.
-
getUtf8(
Pointer< MDB_txn> txn, String key, {String? dbName}) → Future<String?> - Retrieves a UTF-8 encoded string value from the database
-
getUtf8Auto(
String key, {String? dbName}) → Future< String?> - Retrieves a UTF-8 string with automatic transaction management.
-
getVersion(
) → String - Gets the version string of the LMDB library.
-
init(
String dbPath, {LMDBInitConfig? config, LMDBFlagSet? flags}) → Future< void> - Initializes a new LMDB environment at the specified path with optional configuration and flags.
-
listDatabases(
) → Future< List< String> > - Lists all named databases in the environment.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
put(
Pointer< MDB_txn> txn, String key, List<int> value, {String? dbName, LMDBFlagSet? flags}) → Future<void> - Stores a raw byte value in the database.
-
putAuto(
String key, List< int> value, {String? dbName, LMDBFlagSet? flags}) → Future<void> - Convenience methods with automatic transaction management Stores a raw byte value with automatic transaction management.
-
putUtf8(
Pointer< MDB_txn> txn, String key, String value, {String? dbName, LMDBFlagSet? flags}) → Future<void> - Stores a UTF-8 encoded string value in the database
-
putUtf8Auto(
String key, String value, {String? dbName, LMDBFlagSet? flags}) → Future< void> - Stores a UTF-8 string with automatic transaction management.
-
stats(
Pointer< MDB_txn> txn, {String? dbName, LMDBFlagSet? flags}) → Future<DatabaseStats> - Gets statistics for a specific database using an explicit transaction.
-
statsAuto(
{String? dbName, LMDBFlagSet? flags}) → Future< DatabaseStats> - Gets database statistics with automatic transaction management.
-
sync(
bool force) → Future< void> - Synchronizes the environment to disk.
-
toString(
) → String -
A string representation of this object.
inherited
-
txnAbort(
Pointer< MDB_txn> txn) → Future<void> - Aborts a transaction and rolls back all its changes.
-
txnCommit(
Pointer< MDB_txn> txn) → Future<void> - Commits a transaction and makes all its changes permanent.
-
txnStart(
{Pointer< MDB_txn> ? parent, LMDBFlagSet? flags}) → Future<Pointer< MDB_txn> > - Starts a new LMDB transaction.
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited