Redis

[9] Because it holds all data in memory and because of its design, Redis offers low-latency reads and writes, making it particularly suitable for use cases that require a cache.

[13] Companies that use Redis include Twitter,[14][15] Airbnb,[16] Tinder,[17] Yahoo,[18] Adobe,[19] Hulu,[20] Amazon[21] and OpenAI.

After encountering significant problems in scaling some types of workloads using traditional database systems, Sanfilippo began in 2009 to prototype a first proof of concept version of Redis in Tcl.

As a consequence, the Linux Foundation created a fork under the name of Valkey,[40] allowing community maintainers, contributors, and users to continue working on an open source version of the Redis database.

Redis also provides a data model that is very unusual compared to a relational database management system (RDBMS).

User commands do not describe a query to be executed by the database engine but rather specific operations that are performed on given abstract data types.

The retrieval is done without help from the database system in form of secondary indexes, aggregations or other common features of traditional RDBMS.

[45] Many programming languages have Redis language bindings on the client side, including:[46] ActionScript, C, C++, C#, Chicken, Clojure, Common Lisp, Crystal, D, Dart, Delphi,[47] Elixir, Erlang, Go, Haskell, Haxe, Io, Java, Nim, JavaScript (Node.js), Julia, Lua, Objective-C, OCaml, Perl, PHP, Pure Data, Python, R,[48] Racket, Ruby, Rust, Scala, Smalltalk, Swift, and Tcl.

Note, that some of them are dual licensed, and not under the BSD 3 clause:[50] Former implementations include: Redis typically holds the whole dataset in memory.

Alternatively by journaling, where a record of each operation that modifies the dataset is added to an append-only file (AOF) in a background process.

By default, Redis writes data to a file system at least every 2 seconds, with more or less robust options available if needed.

Redis replicas can be configured to accept writes, permitting intentional and unintentional inconsistency between instances.

The publish–subscribe feature is fully implemented, so a client of a replica may subscribe to a channel and receive a full feed of messages published to the master, anywhere up the replication tree.

[61] When the durability of data is not needed, the in-memory nature of Redis allows it to perform well compared to database systems that write every change to disk before considering a transaction committed.

Salvatore Sanfilippo, the original developer of Redis (photo taken in 2015)