GithubHelp home page GithubHelp logo

ndelvalle / rustdis Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 148 KB

Partial Redis server implementation using Rust for learning purposes.

Home Page: https://docs.rs/rustdis

Rust 99.96% Makefile 0.04%
redis redis-server

rustdis's Introduction

rustdis

Welcome to rustdis, a partial Redis server implementation written in Rust.

This project came to life out of pure curiosity, and because we wanted to learn more about Rust and Redis. So doing this project seemed like a good idea. The primary goal of rustdis is to offer a straightforward and comprehensible implementation, with no optimization techniques to ensure the code remains accessible and easy to understand. As of now, rustdis focuses exclusively on implementing Redis' String data type and its associated methods. You can find more about Redis strings here: Redis Strings.

This server is not production-ready; it is intended purely for educational purposes.

Run

cargo run

Test

cargo test

rustdis's People

Watchers

 avatar  avatar

rustdis's Issues

Milestones

Milestones

  1. Make it public (2024-04-23) โœ…
  2. Support string commands (without options) /commands/?group=string & /data-types/strings/ (2024-05-05) โœ…
  3. Document it (README, notes, comments, et al)
  4. Server improvements (TTL, client info, etc)
  5. Future milestones
    1. Persist to disk & "log file" (Redis persistence)
    2. Compatibility test suit
    3. String commands with all options

TO-DO

  • Does the protocol ever send -1 on the bulk error?
  • Change the store type to keep information about the key (eg. ttl) @gillchristian
  • Keep a record of connected clients. For client commands. @gillchristian
  • TTL
  • Validate argument count:
    redis> PING hello world
    (error) wrong number of arguments for 'ping' command
    
  • All string commands /commands/?group=string & /data-types/strings/
  • Bulk frames (string / error) could be optimized by reading the specified length
  • Documentation and notes (ferrum-field.vercel.app)
  • Implement logging
  • Nested commands (eg.object encoding, object freq)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.