'''[http://redis.io/%|%Redis]''', by [SS], is an in-memory data structure store.
** Attributes **
&| Website | https://redis.io |&
&| Repository | https://github.com/redis/redis |&
&| Latest release | 7.x |&
&| License | BSD-3-Clause before version 7.4, Redis Source Available License v2 or https://en.wikipedia.org/wiki/Server_Side_Public_License%|%Server Side Public License%|% v1 since. |&
&| Maintainer | Redis Ltd. |&
** Alternatives and forks **
* https://github.com/valkey-io/valkey%|%Valkey%|% — a fork by former contributors under the original license.
* https://redict.io%|%Redict%|% — an [LGPL%|%LGPL-3.0-only%|%] fork by Drew DeVault.
* https://github.com/Snapchat/KeyDB%|%KeyDB%|% — a multithreaded fork under the original license.
* A https://github.com/stars/dbohdan/lists/resp-databases%|%list of Redis-protocol databases%|% by [dbohdan].
** See Also **
* [StarStore] — a Redis-like API for [Metakit].
** Description **
Redis is an in-memory data structure store that persists on disk. The data model is key-value, but many different kinds of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes. It is somewhat like [memcached] but persistent.
Redis is implemented in C with a test suite written in Tcl. The test suite includes a Tcl https://github.com/antirez/redis/blob/unstable/tests/support/redis.tcl%|%client library%|%.
** History **
[SS%|%Salvatore Sanfilippo] aka "antirez" implemented the first version of Redis, in Tcl. It was then called "LMDB" (unrelated to [LMDB]), in Tcl. He has published its source code as a https://gist.github.com/antirez/6ca04dd191bdb82aad9fb241013e88a8%|%Gist%|% on [GitHub].
In June 2020 [SS] http://antirez.com/news/133%|%stepped down%|% as the maintainer of Redis. In March 2024 Redis Ltd. announced it was https://redis.com/blog/redis-adopts-dual-source-available-licensing/%|%switching Redis to dual source-available licensing%|%, leading to forks. LWN.net covered the event in https://lwn.net/Articles/966631/%|%"The race to replace Redis"%|%.
** Tcl clients **
*** Retcl ***
[https://github.com/gahr/retcl%|%Retcl] is an event-driven, object-oriented, Redis client library targeting the Tcl scripting language.
Things that Retcl does which are missing in Salvatore's client are:
* Pub/Sub support
* Callbacks specified per subscription pattern / channel
* Configurable results cache
* Global and per-command sync / async modes
* User-defined error handler
*** Other clients ***
There is another client [https://github.com/efrecon/disque/blob/master/resp-0.2.tm%|%library] in the [https://github.com/efrecon/disque%|%disque] client implementation.
https://github.com/bradvoth/redis-tcl%|%redis-tcl%|%: Tcl library for Redis access.
** Redis and Jim Tcl **
Since version 0.81, [Jim Tcl] can be built with a Redis-client C extension.
You can find a basic Redis client library in pure Jim Tcl in [jimhttp]. The library also works in Tcl 8.6 and later.
Jim Tcl was originally another project of antirez.
<<categories>> Caching | Database