Redis 6.0 release

Prepared DBMS release Redis 6.0belonging to the class of NoSQL systems. Redis provides Memcached-like functionality for storing key/value data, extended with support for structured data formats such as lists, hashes, and sets, as well as the ability to run server-side Lua script handlers. Project code supplied under the BSD license. Add-on modules offering advanced features for enterprise users such as RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom from last year supplied under the proprietary RSAL license. The development of open versions of these modules under the AGPLv3 license is continued by the project GoodFORM.

Unlike Memcached, Redis provides permanent storage of data on disk and guarantees the safety of the database in the event of an abnormal shutdown. The source texts of the project are distributed under the BSD license. Client libraries are available for most popular languages, including Perl, Python, PHP, Java, Ruby, and Tcl. Redis supports transactions that allow you to execute a group of commands in one step, guaranteeing consistency and consistency (commands from other requests cannot wedge) the execution of a given set of commands, and in case of problems, allowing you to roll back changes. All data is fully cached in RAM.

Commands such as increment/decrement, standard operations on lists and sets (union, intersection), key renaming, multiple selections, and sorting functions are provided for data manipulation. Two storage modes are supported: periodic synchronization of data to disk and logging of changes to disk. In the second case, the complete safety of all changes is guaranteed. It is possible to organize master-slave data replication to several servers, carried out in a non-blocking mode. A publish/subscribe messaging mode is also available, in which a channel is created from which messages are distributed to subscribed clients.

Key improvements, added in Redis 6.0:

  • By default, the new RESP3 protocol is proposed, but the connection setup starts in RESP2 mode and the client only switches to the new protocol if the new HELLO command is used in the connection negotiation. RESP3 allows complex data types to be returned directly without the need to convert generic arrays on the client side and separate return types.
  • Support for access control lists (ACL), allowing you to accurately determine which operations can be performed by the client and which are not. ACLs also make it possible to protect against possible errors during development, for example, a handler that performs only the BRPOPLPUSH operation can be prohibited from performing other operations, and if the FLUSHALL call added during debugging is accidentally forgotten in production code, this will not lead to problems. Implementing an ACL does not incur additional overhead and has little to no performance impact. Interface modules have also been prepared for ACLs, allowing you to create your own authentication methods. To view all recorded ACL violations, the ACL LOG command is provided. Added "ACL GENPASS" command to generate unpredictable session keys using HMAC based on SHA256.
  • Support SSL / TLS to encrypt the communication channel between the client and the server.
  • Support caching data on the client side. There are two modes available for coordinating the cache on the client side with the state of the database: 1. Remembering on the server the keys that the client previously requested in order to inform him about the loss of relevance of the entry in the client cache. 2. The "broadcasting" mechanism, in which the client subscribes to certain key prefixes and the server notifies him if the keys that fall under these prefixes change. The advantage of the β€œbroadcasting” mode is that the server does not spend additional memory on storing a map of values ​​cached on the client side, and the disadvantage is an increase in the number of transmitted messages.
  • The Disque message broker, which allows you to use Redis to process message queues, has been removed from the base composition in separate module.
  • Added cluster proxy, a proxy for a Redis server cluster that allows a client to treat multiple Redis servers as a single instance. The proxy can route requests to nodes with the necessary data, multiplex connections, reconfigure the cluster in case of node failures, and execute requests spanning multiple nodes.
  • The API for writing modules has been significantly improved, essentially turning Redis into a framework that allows you to create systems in the form of add-on modules.
  • A replication mode has been implemented in which RDB files are immediately deleted after they have been used.
  • The PSYNC2 replication protocol has been improved to allow for more frequent partial resynchronizations by increasing the chances of detecting an offset shared between the replica and the master.
  • Speed ​​up loading RDB files. Depending on the filling of the file, the acceleration is from 20 to 30%. Significantly accelerated the execution of the INFO command in the presence of a large number of connected clients.
  • A new STRALGO command has been added with the implementation of complex string processing algorithms. Currently, only one LCS (longest common subsequence) algorithm is available, which can be useful when comparing RNA and DNA sequences.

Source: opennet.ru

Add a comment