███████╗ ██████╗ ██████╗ ██████╗ █████╗ ██████╗ ██████╗ ██████╗ ██╔════╝██╔═══██╗██╔═══██╗██╔══██╗██╔══██╗██╔══██╗ ██╔══██╗██╔══██╗ █████╗ ██║ ██║██║ ██║██████╔╝███████║██████╔╝ ██║ ██║██████╔╝ ██╔══╝ ██║ ██║██║ ██║██╔══██╗██╔══██║██╔══██╗ ██║ ██║██╔══██╗ ██║ ╚██████╔╝╚██████╔╝██████╔╝██║ ██║██║ ██║ ██████╔╝██████╔╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ # foobarDB FoobarDB is an in-memory database implemented in Rust that supports the RESP V3 protocol. This project is for learning and research purposes. I aim to familiarize myself with Rust coding by implementing an in-memory database. ## Features - Supports RESP protocol - Supports common Redis commands - High performance and low latency - Supports asynchronous operations ### Prerequisites - Rust 1.82.0 - Cargo package manager ### Clone the repository ```sh git clone https://github.com/yourusername/foobardb.git cd foobardb ``` ### Build the project ```sh cargo build --release ``` ## Usage ### Start the server ```sh cargo run --release --bin foobar_db ``` ### Client example You can use any client that supports the RESP protocol to interact with FoobarDB. Here is a simple example using `redis-cli` to connect to FoobarDB: ```sh redis-cli -h 127.0.0.1 -p 6379 ``` In `redis-cli`, you can execute the following commands: ```sh SET foo bar GET foo DEL foo ``` ## Contributing We welcome contributions! Please follow these steps: 1. Fork this repository 2. Create your feature branch (`git checkout -b feature/fooBar`) 3. Commit your changes (`git commit -am 'Add some fooBar'`) 4. Push to the branch (`git push origin feature/fooBar`) 5. Create a new Pull Request ## License FoobarDB is licensed under the MIT License. For more information, please see the [LICENSE](LICENSE) file. ## Authors - [Chai](https://github.com/daydaydrunk/foobar_db) ## References - [Redis](https://redis.io/) - [Tokio](https://tokio.rs/) - [DashMap](https://github.com/xacrimon/dashmap)