Redis is often referred as a data structures server. What this means is that Redis provides access to mutable data structures via a set of commands, which are sent using a server-client model with TCP sockets and a simple protocol. So different processes can query and modify the same data structures in a shared way.
Data structures implemented into Redis have a few special properties:
- Redis cares to store them on disk, even if they are always served and modified into the server memory. This means that it is fast, but that is also non-volatile.
- Implementation of data structures stress on memory efficiency, so data structures inside it will likely use less memory compared to the same data structure modeled using a high-level programming language.
- It offers a number of features that are natural to find in a database, like replication, tunable levels of durability, cluster, high availability.
Another good example is to think of Redis as a more complex version of Memcached, where the operations are not just SETs and GETs, but operations to work with complex data types like Lists, Sets, ordered data structures, and so forth.
Redis 4.0.6 has been released. Release instructions show that this is an emergency update, both versions have fixed the hidden important mistakes. Recommended upgrade.
This release fixes yet more errors present in the 4.0.5 fixes, that could affect slaves. Moreover, another critical issue in quicklists, when they are used as a massive memory scale, was fixed in this release. Upgrading from any 4.0.x release, especially if you are running 4.0.4 or 4.0.5, is highly recommended.
Note that while this fix for 4.0.6 was written in a hurry as well, this time we took extra precautions in order to avoid writing a broken patch:
1. The code was reviewed by two developers independently.
2. A regression test about the problem introduced in 4.0.4/5 was added.
3. Resisting to duplicated Lua scripts loading into the Lua engine is now the default action of the loading function, thus it’s simpler to stress its behavior.
4. The code section was tested with Valgrind.