Redis is a free and open source key-value database, often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.
Redis is similar to memcached but the dataset is not volatile, and values can be strings, exactly like in memcached, but also lists and sets with atomic operations to push/pop elements.
In order to be very fast but at the same time persistent the whole dataset is taken in memory and from time to time and/or when a number of changes to the dataset are performed it is written asynchronously on disk.
You may lost the last few queries that is acceptable in many applications but Redis is as fast as an in memory DB (beta 6 of Redis comes with initial support for master-slave replication in order to solve this problem by redundancy).
Compression and other interesting features are a work in progress. Redis is written in ANSI C and works in most POSIX systems like Mac OS X, Linux, *BSD, and so on.
· Ruby main repository written by Ezra Zygmuntowicz (aka ezmobius)
· Python main repository written by Ludovico Magnocavallo (aka ludo)
· PHP main repository written by Ludovico Magnocavallo (aka ludo)
· PHP client lib written in C, as a PHP module! http://code.google.com/p/phpredis/ thanks to Alfonso Jimenez.
· Erlang main repository written by Valentino Volonghi of Adroll
· Tcl (the official version is included in the Redis tarball since it's maintained by myself, now you can find it in the Git repository).
· Perl bindings for Redis are available in this SVN repository thanks to Dobrica Pavlinusic.
· Lua bindings for Redis are available in this git repository (and as well as in the Redis git) thanks to Daniele Alessandri.
· Java has two client libraries projects: JDBC-Redis that as you can guess from the name is a client implementing the JDBC API, and JRedis that is JCA compliant. Both libs are actively developed and good quality, I suggest you to check both. Also note that JRedis plans to release support for asynchronous communication between the client and Redis.
· Scala bindings for Redis are available in this Git repository, thanks to Alejandro Crosa.
- [FIX] Sentinel better desynchronization to avoid split-brain elections where no Sentinel managed to get elected.
- [FIX] Stop accepting writes on "MISCONF" error only if master, not slave.
- [FIX] Reply to PING with an error on "MISCONF" errors.