Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cbd/edis
An Erlang implementation of Redis
https://github.com/cbd/edis
Last synced: about 1 month ago
JSON representation
An Erlang implementation of Redis
- Host: GitHub
- URL: https://github.com/cbd/edis
- Owner: cbd
- License: apache-2.0
- Created: 2010-12-24T23:23:25.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2015-09-14T15:07:27.000Z (about 9 years ago)
- Last Synced: 2024-08-01T12:22:26.437Z (4 months ago)
- Language: Erlang
- Homepage: http://inaka.github.com/edis/
- Size: 1.4 MB
- Stars: 467
- Watchers: 51
- Forks: 37
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-starred - cbd/edis - An Erlang implementation of Redis (others)
README
An *Erlang* version of [Redis](http://redis.io), with the goal of similar algorithmic performance but support for multiple master nodes and larger-than-RAM datasets. For [More info](http://inakanetworks.com/assets/pdf//Edis_Implementing_Redis_In_Erlang.pdf), 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](http://inaka.net/hipchat).If you find any **bugs** or have a **problem** while using this library, please [open an issue](https://github.com/inaka/edis/issues/new) in this repo (or a pull request :)).
And you can check all of our open-source projects at [inaka.github.io](http://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