Наконец-то выпущена официальная версия Redis 6.0! Что нового, кроме многопоточности?

Java Redis
Наконец-то выпущена официальная версия Redis 6.0! Что нового, кроме многопоточности?

图片.png

Redis 6.0.1 был официально выпущен 2 мая 2020 года. Как сказал автор Redis Antirez, на данный момент это самая «корпоративная» версия, и это также версия Redis, которая больше всего изменилась в истории, а также имеет наибольшее количество участников разработки версии .

Поэтому перед использованием этой версии разработчикам рекомендуется провести всестороннее тестирование, прежде чем рассматривать производство, ведь производственное окружение — дело нетривиальное. Хорошо, вернемся к сути этой статьи, давайте сосредоточимся на новых функциях, которые предлагает нам Redis 6.0.1.

Поэтому перед использованием этой версии разработчикам рекомендуется провести всестороннее тестирование, прежде чем рассматривать производство, ведь производственное окружение — дело нетривиальное. Хорошо, вернемся к сути этой статьи, давайте сосредоточимся на новых функциях, которые предлагает нам Redis 6.0.1.

Знакомство с новыми функциями Redis

Журнал обновлений Redis 6 в основном состоит из следующих пяти частей:

  1. Рекомендация версии Redis 6.0-RC1;
  2. Введение новых возможностей Redis 6.0-RC2;
  3. Внедрение новых возможностей Redis 6.0-RC3;
  4. Внедрение новых возможностей Redis 6.0-RC4;
  5. Представляем новые функции версии Redis 6.0.0 GA.

В дополнение к журналу изменений вышеперечисленных версий существует также журнал изменений официальной версии 6.0.1, но время выпуска этой официальной версии всего на два дня позже, чем Redis 6.0.0 GA, поэтому были исправлены только некоторые ошибки. , так что нам нужно только посмотреть на пять вышеприведенных журналов.

1. Журнал изменений Redis 6.0-rc1

Официальный журнал изменений выглядит следующим образом:

Redis 6 improves Redis in a number of key areas and is one of the largest Redis releases in the history of the project, so here we'll list only the biggest features in this release:

  • The modules system now has a number of new APIs that allow module authors   to make things otherwise not possible in the past. It is possible to   store arbitrary module private data in RDB files, to hook on different   server events, capture and rewrite commands executions, block clients on   keys, and so forth.
  • The Redis active expire cycle was rewritten for much faster eviction of keys   that are already expired. Now the effort is tunable.
  • Redis now supports SSL on all channels.
  • ACL support, you can define users that can run only certain commands and/or   can only access only certain keys patterns.
  • Redis now supports a new protocol called RESP3, which returns more   semantical replies: new clients using this protocol can understand just   from the reply what type to return to the calling program.
  • There is server-side support for client-side caching of key values. This   feature is still experimental and will get more changes during the next   release candidates, but you can already test it and read about it here:   Redis.IO/темы/трагические…
  • Redis can now optionally use threads to handle I/O, allowing to serve   2 times as much operations per second in a single instance when   pipelining cannot be used.
  • Diskless replication is now supported even on replicas: a replica is now   able, under certain conditions the user can configure, to load the RDB   in the first synchronization directly from the socket to the memory.
  • Redis-benchmark now supports a Redis Cluster mode.
  • SRANDMEMBER and similar commands have a better distribution.
  • Redis-cli improvements.
  • Systemd support rewritten.
  • A Redis Cluster proxy was released here:   GitHub.com/aHuman X75/Горячие…
  • A Disque module for Redis was released here:   GitHub.com/Анти Кин/Третий…

Самые большие дополнения к этому выпуску перечислены ниже:

  • Многочисленные новые модули API
  • Лучший цикл экспирации
  • SSL
  • Контроль доступа ACL
  • протокол RESP3
  • Кэширование на стороне клиента
  • Многопоточный ввод-вывод (Threaded I/O)
  • Бездисковая репликация на репликах
  • Поддержка кластера и оптимизация Redis-cli для Redis-benchmark
  • Systemd поддерживает перезапись
  • Агент кластера Redis выпущен с Redis 6 (но в другом REPO)
  • Модуль Disque выпущен с Redis 6

2. Журнал изменений Redis 6.0-rc2

Hi Redis users, Redis 6 is approaching and will be released 30th of April. New release candidates will be released at the end of March, then another one mid April, to finally reach the GA at the end of April.

Redis 6 RC2 brings many fixes and new things, especially in the area of client side caching. This is the list of big changes in this release. As usually you can find the full list of commits at the end:

New features and improvements:

  • ACL LOG: log denied commands, keys accesses and authentications.
  • Client side caching redesigned. Now we use keys not caching slots.
  • Client side caching: Broadcasting mode implemented.
  • Client side caching: OPTIN/OPTOUT modes implemented.
  • Remove RDB files used for replication in persistence-less instances (option).

Fixes (only selected ones, see commits for all the fixes):

  • Different fixes to streams in edge cases.
  • Fix duplicated CLIENT SETNAME reply because of RESP3 changes.
  • Fix crash due to new active expire division by zero.
  • Avoid sentinel changes promoted_slave to be its own replica.
  • Fix bug on KEYS command where pattern starts with * followed by \x00.
  • Threaded I/O: now the main thread is used as well to do I/O.
  • Many fixes to modules APIs, and more to come in the next RCs.
  • ld2string should fail if string contains \0 in the middle.
  • Make the Redis test more reliable.
  • Fix SPOP returning nil (see #4709). WARNING: API change.

Redis 6 RC2 содержит множество исправлений и новых функций, особенно кэширование на стороне клиента. Критические изменения в этом выпуске перечислены ниже.

  • ACL LOG: Записывает запрещенные команды, доступ к ключу и аутентификацию.
  • Переработано кэширование на стороне клиента. Теперь вместо кэш-слотов мы используем ключи.
  • Кэширование на стороне клиента: реализован широковещательный режим.
  • Кэш клиента: Реализован режим OPTIN/OPTOUT.
  • Удалите файлы RDB, используемые для репликации в непостоянных экземплярах (необязательно).
  • Исправить (только выбранные исправления, см. Все исправления):
  • Различные исправления для конвекции в крайних случаях.
  • Исправление повторяющихся ответов CLIENT SETNAME из-за изменений RESP3.
  • Исправлен сбой, вызванный делением нового действительного срока действия на ноль.
  • Избегайте продвижения дозорных изменений в своих копиях.
  • Исправлена ​​ошибка в команде KEYS, начинающейся с *, за которой следует \x00.
  • Многопоточный ввод-вывод: основной поток теперь также используется для выполнения ввода-вывода.
  • Многочисленные исправления в API модуля, и в следующем RC их будет больше.
  • ld2string должен дать сбой, если строка содержит \0 в середине.
  • Сделайте тесты Redis более надежными.

3. Журнал изменений Redis 6.0-rc3

Dear users, this is a list of the major changes in this release, please check  the list of commits for detail:

  • Fix crash due to refactoring for SSL, for the connection code.
  • Precise timeouts for blocking commands. Now the timeouts have HZ   resolution regardless of the number of connected clinets. New timeouts   are stored in a radix tree and sorted by expire time.
  • Fix rare crash when resizing the event loop because of CONFIG maxclients.
  • Fix systemd readiness after successful partial resync.
  • Redis-cli ask password mode to be prompted at startup (for additional safety).
  • Keyspace notifications added to MIGRATE / RESTORE.
  • Threaded I/O bugs fixed.
  • Implement new ACL style AUTH in Sentinel.
  • Make 'requirepass' more backward compatible with Redis <= 5.
  • ACL: Handle default user as disabled if it's off regardless of "nopass".
  • Fix a potential inconsistency when upgrading an instance in Redis Cluster   and restarting it. The instance will act as a replica but will actually be   set as a master immediately. However the choice of what to do with already   expired keys, on loading, was made from the POV of replicas.
  • Abort transactions after -READONLY error.
  • Many different fixes to module APIs.
  • BITFIELD_RO added to call the command on read only replicas.
  • PSYNC2: meaningful offset implementation. Allow the disconnected master   that is still sending PINGs to replicas, to be able to successfully   PSYNC incrementally to new slaves, discarding the last part of the   replication backlog consisting only of PINGs.
  • Fix pipelined MULTI/EXEC during Lua scripts are in BUSY state.
  • Re-fix propagation API in modules, broken again after other changes.

В этом выпуске в основном исправлены некоторые ошибки, как показано в следующем списке:

  • Исправлен сбой кода подключения из-за рефакторинга SSL.
  • Используется для предотвращения точного времени ожидания команды. Теперь время ожидания достигло разрешения Гц, а количество разъемов клинита сейчас. Новый тайм-аут хранится в базе дереве и отсортировано по времени истечении.
  • Исправлен редкий сбой, возникавший из-за Config MaxClients и настройки цикла событий.
  • Исправьте готовность systemd после успешной частичной повторной синхронизации.
  • Redis-cli запрашивает режим пароля при запуске (для повышения безопасности).
  • Уведомления о пространстве ключей были добавлены в MIGRATE/RESTORE.
  • Исправлена ​​ошибка ввода-вывода потока.
  • Реализуйте новый ACL Auth Auth в Sentinel.
  • Сделано «requirepass» более обратно совместимым с Redis
  • ACL: если пользователь по умолчанию отключен, он считается отключенным, независимо от того, является ли он «nopass» или нет.
  • Исправлены возможные несоответствия при обновлении экземпляров в Redis Cluster.
  • Прервать транзакцию после ошибки -READONLY.
  • Множество различных исправлений в API модуля.
  • Добавлен BITFIELD_RO для вызова команды на репликах чтения.
  • PSYNC2: значимая реализация смещения. Отключенным мастерам разрешено по-прежнему отправлять PING на реплики, чтобы успешный PSYNC мог быть доставлен постепенно новым ведомым устройствам, отбрасывая невыполненную репликацию, состоящую только из PING.
  • Исправьте MULTI/EXEC конвейеров, когда скрипт Lua занят.
  • Переработан API распространения в модуле, чтобы он снова ломался после других изменений.

4. Журнал изменений Redis 6.0-rc4

Hi all, this the latest release candidate of Redis 6. This is likely to be very similar to what you'll see in Redis 6 GA. Please test it and report any issue :-)

Main changes in this release:

* Big INFO speedup when using a lot of of clients.     * Big speedup on all the blocking commands: now blocking       on the same key is O(1) instead of being O(N).     * Stale replicas now allow MULTI/EXEC.     * New command: LCS (Longest Common Subsequence).     * Add a new configuration to make DEL like UNLINK.     * RDB loading speedup.     * Many bugs fixed (see the commit messages at the end of this node)

Основное новое содержание этой версии заключается в следующем:

  • Улучшена скорость запроса с помощью команды INFO при подключении большого количества клиентов.
  • Значительное ускорение всех команд блокировки: блокировка по одному и тому же ключу теперь выполняется за O(1) вместо O(N).
  • Устаревшие копии теперь допускают MULTI/EXEC.
  • Новая команда: LCS (самая длинная общая подпоследовательность).
  • Добавьте новую конфигурацию, чтобы DEL действовал как UNLINK.
  • Увеличена скорость загрузки RDB.
  • Исправлено множество ошибок.

5. Журнал изменений Redis 6.0.0 GA

Hi all, finally we have Redis 6.0.0 GA! Enjoy this new Redis release. Most of the documentation was updated today so that you can likely find what you are looking for about the new features at redis.io. This is the list of what changed compared to the previoius release candidate:

  • XCLAIM AOF/replicas propagation fixed.
  • Client side caching: new NOLOOP option to avoid getting notified about   changes performed by ourselves.
  • ACL GENPASS now uses HMAC-SHA256 and have an optional "bits" argument.   It means you can use it as a general purpose "secure random strings"   primitive!
  • Cluster "SLOTS" subcommand memory optimization.
  • The LCS command is now a subcommand of STRALGO.
  • Meaningful offset for replicas as well. More successful partial   resynchronizations.
  • Optimize memory usage of deferred replies.
  • Faster CRC64 algorithm for faster RDB loading.
  • XINFO STREAM FULL, a new subcommand to get the whole stream state.
  • CLIENT KILL USER .
  • MIGRATE AUTH2 option, for ACL style authentication support.
  • Other random bugfixes.

Основное содержание этого обновления журнала следующее:

  • Исправлено распространение XCLAIM AOF/реплик.
  • Кэширование на стороне клиента: новая опция NOLOOP, чтобы избежать получения изменений о вашем собственном исполнении.
  • ACL GENPASS теперь использует HMAC-SHA256 и имеет необязательный параметр «биты». Это означает, что вы можете использовать его как необработанную "безопасную случайную строку"!
  • Оптимизация памяти подкомандой "SLOTS" кластера.
  • Команда LCS теперь является подкомандом Stralgo.
  • Значимое смещение для копии. Более успешная частичная повторная синхронизация.
  • Оптимизируйте использование памяти для отложенного ответа.
  • Более быстрый метод CRC64 для более быстрой загрузки RDB.
  • XINFO STREAM FULL, новая подкоманда для получения всего состояния потока.
  • КЛИЕНТ УБИТЬ ПОЛЬЗОВАТЕЛЯ .
  • Параметр MIGRATE AUTH2 для поддержки аутентификации в стиле ACL.
  • Исправлены некоторые другие ошибки.

Адрес загрузки официальной версии Redis 6.0.1:redis.io/

Официальный список изменений (на английском языке):Пользовательское содержимое raw.GitHub.com/Anti Keen/Hot…

Суммировать

Объединив журналы обновлений всех вышеперечисленных версий, мы обнаружили, что на этот раз основными функциями Redis 6.0 являются:

  • Обеспечивает ряд новых модулей (модулей) API
  • Обеспечивает кэширование на стороне клиента
  • Возможность многопоточного ввода/вывода
  • Улучшена скорость загрузки журналов RDB.
  • Исправлено несколько ошибок и некоторые оптимизации

Среди них возможность многопоточного ввода-вывода является функцией, о которой мы больше всего беспокоимся Некоторые люди используют ее для сравнения производительности с однопоточной версией, как показано на следующем рисунке:

image.png
(Примечание: изображение взято с сайта iTushou.com)

Из приведенных выше результатов видно, что команда GET/SET дублируется в многопоточной версии.

В целом,Функции, предоставленные нам Redis 6.0 на этот раз, по-прежнему очень велики и очень практичны, но изменения версии слишком велики, нам нужно дождаться проверки времени и большого количества тестов, прежде чем рекомендовать переход в производственную среду онлайн..

последние слова

Оригинальность – это непросто, если вы считаете, что эта статья вам полезна, нажмите на значок "отличный«Это самая большая поддержка и ободрение, спасибо.

Ссылки и благодарности

Официальная документация Redis

Подпишитесь на официальный аккаунт «Java Chinese Community» и ответьте на «Галантные товары», чтобы получить 50 оригинальных галантерейных товаров.Топ-лист.