rudis-http 0.1.1

A minial HTTP Redis server
Documentation

(WIP) Rudis

A mini version of redis that support http interface implemented in Rust. The in-memorry kv-storage is sharded and concurrent safe. Inspired by Tokio's tutorial and Webdis

This is a still work-in-progress project. The goal is to learn Rust and Tokio and is not meant to be used in production.

Installation

cargo add rudis-http

or

cargo install rudis-http

Usage

To run the server, simply run

$ rudis-http

or you can optionally specify the port

$ rudis-http <port>

And the server will be listening on the port you specified or 127.0.0.1:6379 by default.

Once the server isup and running, its service can be accessed via http request. The following are the supported requests:

Get: <your-url>/GET/<key>
Set: <your-url>/SET/<key>/<value>

The response will be in json format. For a SET, you will be getting the status of this command like

$ curl 'localhost:6379/set/hello/world'
{"SET": "OK"}

// or if SET's arguments are not correct
$ curl 'localhost:6379/set/hello'
{"SET": "Invalid"}

and for get, you will be getting the key value pair if there's a match, or an empty json object if there's no match

$ curl 'localhost:6379/get/hello'     
{"hello":"world"}

// if key does not exist
$ curl 'localhost:6379/GET/123'
{}

// if GET's arguments are not correct
$ curl 'localhost:6379/GET'
{"GET": "Invalid"}

Todo

  • support post request with json as arguments
  • more cli options
  • set argument's TTL
  • general purpose client, and build http interface on top of that
  • .rdb file generation and backup
  • authentication

Finsihed Todos

  • cachepadded for mutex