UNPKG

memoradb

Version:

A lightweight in-memory key-value store similar to Redis

91 lines (63 loc) 2.86 kB
# MemoraDB ![TypeScript](https://img.shields.io/badge/typescript-%2300ADD8.svg?style=for-the-badge&logo=typescript&logoColor=white) ![Redis](https://img.shields.io/badge/redis-%23DD0031.svg?style=for-the-badge&logo=redis&logoColor=white) ![NPM Downloads](https://img.shields.io/npm/dw/memoradb?style=for-the-badge) <br/> MemoraDB is a lightweight, type safe, Redis-like, in-memory key-value store written in TypeScript. It currently supports operations like `SET`, `GET`, `EXPIRE`, and more. It was my attempt to learn more about Redis and TypeScript. ## Table of Contents - [Features](#features) - [Installation](#installation) - [Usage](#usage) - [Running MemoraDB Server](#running-memoradb-server) - [Connecting via TCP (Netcat / Telnet)](#connecting-via-tcp-netcat--telnet) - [MemoraDB Commands](#memoradb-commands) - [Contributing](#contributing) - [License](#license) ## Features - In-memory key-value storage - Supports TTL (Time-To-Live) for keys - Basic Redis-like commands (`SET`, `GET`, `DEL`, `INCR`, `DECR`, `FLUSHALL`, etc.) - Lightweight and easy to integrate - TCP server for remote communication - TypeScript support with an easy-to-use client library (WIP) ## Installation You can install MemoraDB via npm: ```sh npm install memoradb ``` ## Usage ### Running MemoraDB Server You can start the Memora server using: ```sh npx memoradb 7000 ``` This will start the server on port `7000`. ### Connecting via TCP (Netcat / Telnet) If MemoraDB is running as a TCP server, you can interact with it using `netcat`: ```sh nc localhost 7000 ``` Then, you can enter commands like: ```sh SET name MemoraDB GET name INCR counter ``` ### MemoraDB Commands MemoraDB supports the following commands: | Command | Description | | ---------------------------- | --------------------------------------------- | | `SET key value [EX seconds]` | Stores a key with an optional expiration time | | `GET key` | Retrieves the value of a key | | `DEL key` | Deletes a key | | `EXPIRE key seconds` | Sets a time-to-live (TTL) for a key | | `TTL key` | Gets the remaining TTL for a key | | `PERSIST key` | Removes expiration from a key | | `FLUSHALL` | Deletes all keys | | `INCR key` | Increments a numerical key | | `DECR key` | Decrements a numerical key | ## Contributing Contributions are welcome! Feel free to open issues or submit PRs. ## License This project is licensed under the MIT License.