MemDBLite is a minimalistic yet powerful in-memory key-value database implemented in C++.
- In-Memory Storage
- Simple Key-Value Store
- Approximate LRU Eviction (Clock algorithm)
- Command-Line Interface (CLI)
SET key value
: Store a string-string key-value pair in the database.GET key
: Retrieve the value associated with the given string key.DELETE key
: Remove the string key-value pair from the database.EXIT
: Quit the database and terminate the program.
- Write-Ahead Logging (WAL): Implement write-ahead logging to ensure data durability and crash recovery.
- Partial Persistence: Periodically persist data to disk for improved resilience.
- TCP/IP Interface: Enable interaction with the database over a TCP/IP connection.
- I/O Multiplexing: Support multiple concurrent connections while maintaining a single-threaded event loop for the database.
- Support for Multiple Data Types: Extend to support various data types for keys and values, such as integers, floats, and binary data.
- C++ compiler (supporting Cxx or later)
make
(for building the project)
cd MemDBLite
make compile
make run
Contributions to MemDBLite are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request.