Need help with edis?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

cbd
462 Stars 38 Forks Apache License 2.0 436 Commits 13 Opened issues

Description

An Erlang implementation of Redis

Services available

!
?

Need anything else?

Contributors list

# 551,564
Erlang
Shell
Ruby
4 commits
# 618,548
Erlang
Shell
2 commits
# 398,018
Erlang
elastic...
MongoDB
CSS
2 commits
# 443,556
Shell
Erlang
sse
Android
1 commit
# 419,394
Erlang
Shell
PHP
ppt
1 commit
# 707,322
Erlang
Shell
1 commit
# 610,235
Erlang
Shell
PHP
Elixir
1 commit
# 468,882
Erlang
Shell
1 commit
# 477,858
Erlang
Shell
Ruby
1 commit
# 69,994
Elixir
Objecti...
email-v...
nsattri...
1 commit

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.

Contact Us

For questions or general comments regarding the use of this library, please use our public hipchat room.

If you find any bugs or have a problem while using this library, please open an issue in this repo (or a pull request :)).

And you can check all of our open-source projects at inaka.github.io

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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.