The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Выпуск СУБД Redis 5.0

25.10.2018 13:29

Подготовлен релиз СУБД Redis 5.0, относящейся к классу NoSQL-систем. Redis предоставляет похожие на Memcached функции для хранения данных в формате ключ/значение, расширенные поддержкой структурированных форматов данных, таких как списки, хэши и множества, а также возможностью выполнения на стороне сервера скриптов-обработчиков на языке Lua. Код проекта поставляется под лицензией BSD.

В отличие от Memcached, Redis обеспечивает постоянное хранение данных на диске и гарантирует сохранность БД в случае аварийного завершения работы. Исходные тексты проекта распространяются в рамках лицензии BSD. Клиентские библиотеки доступны для большинства популярных языков, включая Perl, Python, PHP, Java, Ruby и Tcl. Redis поддерживает транзакции, позволяющие выполнить за один шаг группу команд, гарантируя непротиворечивость и последовательность (команды от других запросов не могут вклиниться) выполнения заданного набора команд, а в случае проблем позволяя откатить изменения. Все данные в полном объёме кэшируются в оперативной памяти.

Для управления данными предоставляются такие команды, как инкремент/декремент, стандартные операции над списками и множествами (объединение, пересечение), переименование ключей, множественные выборки и функции сортировки. Поддерживается два режима хранения: периодическая синхронизация данных на диск и ведение на диске лога изменений. Во втором случае гарантируется полная сохранность всех изменений. Возможна организация master-slave репликации данных на несколько серверов, осуществляемая в неблокирующем режиме. Доступен также режим обмена сообщениями "публикация/подписка", при котором создаётся канал, сообщения из которого распространяются клиентам по подписке.

Ключевые улучшения, добавленные в Redis 5.0:

  • Представлен новый тип данных Stream, который можно использовать для хранения данных в форме пополняемого лога. Записи с типом Stream могут открываться только в режиме пополнения, но допускается удаление произвольных элементов из лога и имеется возможность ограничения максимального размера лога, например, можно сохранять не больше N элементов с удалением самых старых записей по мере поступления новых. Предоставляются средства для отслеживания добавления новых элементов, осуществления различных выборок данных и применения Stream в качестве системы обработки сообщений.

    Для организации совместной обработки разных частей одного потока сообщений реализована концепция Consumer Groups, при которой сообщение может снабжаться идентификатором группы и несмотря на отправку в общий поток, получить это сообщение сможет только клиент с указанным идентификатором (например, через общий поток можно организовать распределение команд среди разных обработчиков);

  • Реализованы новые API для модулей: Timers, Cluster и Dictionary;
  • В дампах RDB теперь сохраняется информация об алгоритмах замещения элементов LFU (Least-Frequently Used, вытеснение на основе частоты обращения к элементу) и LRU (Least Recently Used, вытеснение на основе времени последнего обращения);
  • Код управления кластером переписан с Ruby (redis-trib.rb) на Си и встроен в redis-cli (доступен через команду "--cluster");
  • Реализованы новые команды ZPOPMIN и ZPOPMAX, а также их блокирующие варианты BZPOPMIN и BZPOPMAX, которые извлекают и возвращают из отсортированного набора указанное число наименьших или наибольших значений;
  • Реализована вторая версия системы активной дефрагментации памяти, которая позволяет выполнять дефрагментацию налету без остановки работы, если применяется система распределения памяти Jemalloc (в Linux по умолчанию);
  • Улучшена реализация алгоритма HyperLogLog;
  • Расширены отчёты о состоянии памяти;
  • Во многие составные команды, включающие субкоманды, добавлена встроенная подсказка (субкоманда HELP);
  • Проведена оптимизация для повышения производительности в условиях частого соединения и отсоединения клиентов;
  • Менеджер распределения памяти Jemalloc обновлён до версии 5.1;
  • Добавлены команды: CLIENT UNBLOCK для досрочного снятия блокировки с соединения, выставленной при выполнении блокирующих операций (например BRPOP, XREAD, WAIT); CLIENT ID для получения идентификатора текущего соединения;
  • Добавлена развлекательная команда LOLWUT, с реализацией пасхальных яиц, которые будут меняться в каждой новой версии Redis;
  • Проведена оптимизация кода обработки сетевых соединений;
  • Выполнена работа по избавлению кода от терминов "master" и "slave". Команда "SLAVEOF" переименована в "REPLICAOF", а настройка "slaveof" в "replicaof" (для обеспечения совместимости поддержка "SLAVEOF" сохранена). Поддержка признака "slave" в командах INFO и ROLE пока оставлена, так как связана с большими нарушениями совместимости (в будущем планируется предложить альтернативу INFO и заменить в ROLE "slave" на "replica");
  • Расширены возможности по созданию скриптов-обработчиков на языке Lua.


  1. Главная ссылка к новости (https://groups.google.com/foru...)
  2. OpenNews: Проект Python для соблюдения политкорректности избавляется от терминов "master" и "slave"
  3. OpenNews: Выпуск СУБД Redis 4.0 с новым движком репликации и поддержкой модулей
  4. OpenNews: 75% общедоступных серверов Redis поражены вредоносным ПО
  5. OpenNews: Изменение лицензионной политики проекта Redis
  6. OpenNews: Основан проект GoodFORM, который продолжит развитие свободных модулей к СУБД Redis
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/49495-redis
Ключевые слова: redis, nosql
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (30) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, andy (??), 13:35, 25/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    LOLWUT
     
  • 1.2, кировлес (?), 13:37, 25/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    Дичи со своими слэйво-мастерными комплексами.
     
     
  • 2.6, Аноним (6), 13:57, 25/10/2018 [^] [^^] [^^^] [ответить]  
  • +20 +/
    Через несколько лет, когда начнется борьба за права репликантов (синтетических людей), придется "REPLICAOF" переименовывать еще во что-то. Недальновидные какие-то разработчики в Redis.
     
     
  • 3.8, Нанобот (ok), 14:12, 25/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >придется "REPLICAOF" переименовывать

    придется переименовывать, только если репликанты победят. а пока разработчики верят в человечество

     
     
  • 4.12, Аноним (12), 15:07, 25/10/2018 [^] [^^] [^^^] [ответить]  
  • +6 +/
    ты бот, твое синтетическое мнение тут не у местно
     
     
  • 5.13, Аноним (12), 15:07, 25/10/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    у йди
     
  • 3.15, КО (?), 16:55, 25/10/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Недальновидные какие-то разработчики в Redis.

    Как раз наоборот, оставили себе задел для несложной работы на будущее. :)

     

  • 1.3, Аноним (3), 13:38, 25/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    >Выполнена работа по избавлению от терминов "master" и "slave" в коде. Команда "SLAVEOF" переименована в "REPLICAOF", а настройка "slaveof" в "replicaof" (для обеспечения совместимости поддержка "SLAVEOF" сохранена). Поддержка признака "slave" в командах INFO и ROLE пока оставлена, так как связана с большими нарушениями совместимости (в будущем планируется предложить альтернативу INFO и заменить в ROLE "slave" на "replica");

    Наконец-то, джва года ждал.

     
  • 1.4, Qwerty (??), 13:40, 25/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Добавлена развлекательная команда LOLWUT, с реализацией пасхальных яиц, которые будут меняться в каждой новой версии Redis;

    Вот, чего нам не хватало! Вот, на что стоит распылять силы свободному сообществу! Так победимЪ!

    На самом деле, идея-то хорошая сама по себе, просто я вангую, что команда будет выводить просто потрясающее уныние уровня "1 апрелю в мире IT", от которого сблевал бы и Петросян.

     
     
  • 2.7, Антон (??), 14:11, 25/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    а ты собрался уже читать логи вместо вечернего петросяна?
     

  • 1.5, Аноним (5), 13:46, 25/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Добавлена развлекательная команда LOLWUT, с реализацией пасхальных яиц, которые будут меняться в каждой новой версии Redis;

    остальным проектам стоит поучиться у команды редиса как завоёвывать аудиторию )

     
     
  • 2.21, Аноним (21), 09:32, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В версии 6.0 добавят команду SMUZIHOW, которая будет выдавать рецепты смузей, а в версии 7.0 команду BARBERWHERE, которая используя геолокацию будет сообщать направление к ближайшему барбер шопу, плюс возможность установки Redis на гироскутер.
     

  • 1.11, Борщдрайвен бигдата (?), 14:59, 25/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Представлен новый тип данных Stream, который можно использовать для хранения данных в форме пополняемого лога.
    > Для организации совместной обработки разных частей одного потока сообщений реализована концепция Consumer Groups

    Почему они из редиса упорно делают кафку?

     
     
  • 2.17, KonstantinB (ok), 18:51, 25/10/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Потому что есть такие задачи, когда достаточно легковесного решения.

    Я вот уже знаю, где мне это пригодится.

     
  • 2.18, jOKer (ok), 21:12, 25/10/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Видимо потому что у них не получилось сделать из своей редиски конкурента кролику, а отъесть аудиторию у серьезных и уважаемых проектов, в пользу "легковесного решения" очень хочется. А здоровья придумать что-то свое оригинальное явно (пока?) не хватает.
     
     
  • 3.23, нах (?), 10:10, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    но вот зачем, очередной троллейбус-из-буханки?

    решение-то на глазах перестает быть легковесным. Даже рассчет на аудиторию, ниасилившую еще один апи, не поможет, апи-то все равно приходится дополнять.

    > А здоровья придумать что-то свое оригинальное явно (пока?) не хватает.

    оно и было вполне свое и оригинальное, этакий персистентный мемкэш с человекочитаемым протоколом. А сейчас выросло в такое, что уже с гранатометом добывать ходить надо.

     
  • 3.25, agent_007 (ok), 10:16, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Видимо потому что у них не получилось сделать из своей редиски конкурента кролику

    И сделать из своих рук конкурента ногам у них не получилось тоже.

    Это всё от того, что руки и ноги по своему назначению слегка отличаются. Примерно так же, как rabbit и redis.

     

  • 1.14, Аноним (14), 15:11, 25/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >"ведение на диске лога изменений. Во втором случае гарантируется полная сохранность всех изменений."

    давно ли? fsync для лога делается? прямо точно гарантируют? как такое запустить?

     
     
  • 2.19, Аноним (19), 21:18, 25/10/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Братишк, ты лось или просто читать разучился?
    https://redis.io/topics/persistence
     

  • 1.16, КГБ СССР (?), 18:19, 25/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Выполнена работа по избавлению кода от терминов "master" и "slave". Команда "SLAVEOF" переименована в "REPLICAOF", а настройка "slaveof" в "replicaof" (для обеспечения совместимости поддержка "SLAVEOF" сохранена). Поддержка признака "slave" в командах INFO и ROLE пока оставлена, так как связана с большими нарушениями совместимости (в будущем планируется предложить альтернативу INFO и заменить в ROLE "slave" на "replica");

    Вот ведь люди напряжённо работают! Как Стаханов!

     
  • 1.22, ShyLion (ok), 09:37, 26/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Кстати, а почему до сих пор не убрали слова black и white? Нужно совсем убрать их из языка. Куда смотрит ПАСЕ и белый(!) дом?
     
  • 1.28, Бондарюк Андрей (?), 12:27, 26/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Вопрос знатокам: чем Redis лучше Apache Ignite?
    Спасибо.
     
     
  • 2.29, Аноним (21), 12:29, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Сервер есть с 64GB памяти и 32 ядрами, минимум?
    Если да, то Ignite лучше.
     
     
  • 3.33, нах (?), 16:30, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    э... стесняюсь спросить,а редису не нужна  ни память ни процессор? ;-)

    я бы поставил вопрос по другому - база-то уже близка к 64gb, или пока в мегабайтах измеряется?

     
  • 2.30, Борщдрайвен бигдата (?), 14:11, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Давай так… если ты сравниваешь Ignite с Redis, то для твоих задач Ignite не нужен. Вот правда.

    Ignite для разворачивания всяких кластеров для хранения десятков/сотен терабайт в оперативке, да так, чтобы ещё не тормозило и чтобы с этими данными можно было цивильно работать через SQL/HQL или там Spark.

     
     
  • 3.34, redis (?), 16:31, 26/10/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    мы тоже можем в кластер! дададада!

     
  • 2.38, Аноним (38), 11:00, 01/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вот сравнение https://redisson.org/feature-comparison-redis-vs-ignite.html
     

  • 1.35, Аноним (35), 19:21, 26/10/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    В свое время было ограничение на количество записей в списке в 2^32 сохранилось или уже побороли. Вообще что посоветуете для хранения больших индексов в Redis?
     
     
  • 2.36, Аноним (36), 05:12, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сломать руки архитектору приложения, которое требует поддержку 4х МИЛЛИАРДОВ записей в одном списке.
     
     
  • 3.37, bill.g (?), 08:52, 27/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    640k should be enough for all!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру