Coder Social home page Coder Social logo

edis's Introduction

An Erlang version of Redis, with the goal of similar algorithmic performance but support for multiple master nodes and larger-than-RAM datasets. For More info, see this PDF of a Talk at Erlang Factory 2012.

Usage

Just run $ make run and open connections with your favourite redis client.

Differences with Redis

Different Behaviour

  • SAVE, BGSAVE and LASTSAVE are database dependent. The original Redis saves all databases at once, edis saves just the one you SELECT'ed.
  • INFO provides much less information and no statistics (so, CONFIG RESETSTAT does nothing at all)
  • MULTI doesn't support:
    • cross-db commands (i.e. FLUSHALL, SELECT, MOVE)
    • non-db commands (i.e AUTH, CONFIG *, SHUTDOWN, MONITOR)
    • pub/sub commands (i.e. PUBLISH, SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE)
  • (P)UNSUBSCRIBE commands are not allowed outside PUBSUB mode
  • PUBLISH response is not precise: it's the amount of all clients subscribed to any channel and/or pattern, not just those that will handle the message. On the other hand it runs in O(1) because it's asynchronous, it just dispatches the message.

Missing Features

  • Dynamic node configuration (i.e. the SLAVEOF command is not implemented)
  • Encoding optimization (i.e. all objects are encoded as binary representations of erlang terms, so for instance "123" will never be stored as an int)
  • OBJECT REFCOUNT allways returns 1 for existing keys and (nil) otherwise

Unsupported Commands

SYNC, SLOWLOG, SLAVEOF, DEBUG *

License

edis is licensed by Electronic Inaka, LLC under the Apache 2.0 license; see the LICENSE file in this repository.

TODO

  • Backends
    • HanoiDB
      • Make use of the efficient range searchs with start/end for searching ranges
      • Make use of time-based key expiry
      • Finish the TODO items

edis's People

Contributors

elbrujohalcon avatar vireshas avatar fpereiro avatar msmaeda avatar polidog avatar

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.