Книга рецептов Redis 4.x

Пеньчень Хуань, Зуофей Вань

 

Первая публикация на английском языке: Февраль 2018

Ссылка на продукт: 1270218

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

При подготовке этой книги были предприняты все усилия чтобы гарантировать точность представленной информации. Тем не менее, информация, содержащаяся в этой книге, продаётся без гарантии в явном или неявном виде. Ни авторы, ни Packt Publishing, ни их дилеры и дистрибьюторы не будут нести ответственность за любые убытки, вызванные или предположительно вызванные прямо или косвенно этой книгой.

Packt Publishing пыталась предоставить информацию о товарных знаках обо всех компаниях и продуктов, упомянутых в данной книге для надлежащего использования капиталов. Тем не менее, Packt Publishing не может гарантировать точность этой информации.

Опубликовано Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK

ISBN 978-1-78398-816-7

www.packtpub.com

2018-08-26

 Состав исполнителей

Издания на английском языке
Авторы
Пеньчень Хуань
Зуофей Вань
Редактор выпуска
Эми Вараньеонкар
Редактор
Намрата Пейтил
Редактор разработки содержания
Амрита Нороньа
Технический редактор
Лдойвита Алва
Литературный редактор
Safis Editing
Координатор проекта
Швита Х Байрваткар
Корректор
Safis Editing
Составитель указателя
Марьяммал Чэттийяр
Графика
Джиша Кайрэйл
Координатор производства
Апарна Бхагат

 Об авторах

Пеньчень Хуань

Зуофей Вань

 Рецензент

Домагож Катавич

Игорь Малиновский

 www.PacktPub.com

 Содержание

Предисловие
Для кого эта книга
Что охватывает эта книга
Как получить максимальную отдачу от этой книги
Загрузка примеров кода этой книги
Загрузка цветных изображений этой книги
Принятые соглашения
Будьте на связи
Отзывы
Опечатки
Незаконное тиражирование
Вопросы
Глава 1. Приступая к Redis
Введение
Загрузка и установка Redis
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Запуск и останов Redis
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Подключение к Redis посредством redis-cli
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Получение информации о сервере
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Общее представление о модели событий Redis
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Общее представление о протоколе Redis
Подготовка...
Как это сделать...
Как это работает...
Дополнительно
Глава 2. Типы данных
Введение
Применение строкового типа данных
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Применение типа данных списков
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Применение типа данных хэшей
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Применение типа данных множества
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Применение типа данных сортированного множества
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Применение типа данных HyperLogLog
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Применение типа данных Geo
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Ключи управления
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Глава 3. Свойства данных
Введение
Применение растровых изображений
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Установка срока истечения на ключи
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Применение SORT
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Применение конвейеров
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Общее понимание транзакций Redis
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Применение PubSub
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Применение Lua
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Отладка Lua
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Глава 4. Разработка с помощью Redis
Введение
Когда применять Reddis в вашем приложении
Сохранение сеанса
Аналитика
Рейтинги
Очереди
Последние N записей
Кэширование
Также ознакомьтесь...
Дополнительно
Применение правильных типов данных
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Применение правильного API Redis
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Подключение к Redis в Java
Подготовка...
Как это сделать...
Подключение к серверу Redis
Применение конвейеров в Jedis
Применение транзакций в Jedis
Запуск сценариев Lua в Jedis
Применение пула подключений в Jedis
Как это работает...
Также ознакомьтесь...
Подключение к Redis в Python
Подготовка...
Как это сделать...
Подключение к серверу Redis
Применение конвейеров
Запуск сценариев Lua
Как это работает...
Также ознакомьтесь...
Дополнительно
Подключение к Redis при помощи Spring Data Redis
Подготовка...
Как это сделать...
Как это работает...
Дополнительно
Создание задания MapReduce для Redis
Подготовка...
Как это сделать...
Как это работает...
Дополнительно
Создание задания Spark для Redis
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Глава 5. Репликации
Введение
Настройка репликации Redis
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Оптимизация репликации
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Поиск неисправности репликации
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Глава 6. Перманентность
Введение
RDB манипуляции
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Изучение RDB
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
AOF манипуляции
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Изучение AOF
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Сочетание RDB и AOF
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Глава 7. Настройка Высокой доступности и кластера
Введение
Установка Sentinel
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Проверка Sentinel
Подготовка...
Как это сделать...
Как это работает...
Ручное переключение мастера для восстановления при сбое
Имитация падения мастера
Имитация падения двух подчинённых
Имитация падения одного Sentinel
Имитация падения двух Sentinel
Также ознакомьтесь...
Администрирование Sentinel
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Настройка кластера Redis
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Проверка кластера Redis
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Администрирование кластера Redis
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Глава 8. Развёртывание промышленной среды
Введение
Развёртывание Redis в Linux
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Безопасность Redis
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Варианты установок подключения клиента
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Настройка политики памяти
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Эталонное тестирование
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Ведение журналов
Подготовка...
Как это сделать...
Как это работает...
Глава 9. Администрирование Redis
Введение
Управление настройками сервера Redis
Подготовка...
Как это сделать...
Как это работает...
Работа с Redis при помощи bin/redis-cli
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Резервное копирование и восстановление
Подготовка...
Как это сделать...
Резервное копирование данных Redis
Восстановление данных Redis из файла RDB
Как это работает...
Мониторинг памяти
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Управление клиентами
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Миграция данных
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Глава 10. Поиск неисправностей Redis
Введение
Проверка состояния Redis
Подготовка...
Как это сделать...
Как это работает...
Дополнительно
Выявление медленных запросов при помощи SLOWLOG
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Выявление неисправностей латентности
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Выявление неисправностей памяти
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Выявление неисправностей крушений
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Глава 11. Расширение Redis при помощи модулей Redis
Введение
Загрузка модуля Redis
Подготовка...
Как это сделать...
Как это работает...
Дополнительно
Создание модуля Redis
Подготовка...
Как это сделать...
Как это работает...
Также ознакомьтесь...
Дополнительно
Глава 12. Экосистема Redis
Введение
Клиент Redisson
Дополнительно
Twemproxy
Дополнительно
Codis - кластерное решение Redis с Высокой производительностью на основе прокси
Дополнительно
Система управления Redis CacheCloud
Дополнительно
Pika - Redis совместимая база данных NoSQL
Дополнительно
Приложение A. Установка среды Windows
Установка среды Windows
Приложение B. Эффективное применение RDMA для служб ключ- значение
Аннотация
Введение
Предпосылки
Хранилища ключ- значение
RDMA
Сопоставление со стандартным Ethernet
Глаголы и пары очередей
Виды доставки
Существующие хранилища ключ- значение на основе RDMA
Проектные решения
Система обозначений и экспериментальная настройка
Применение WRITE вместо READ
WRITE имеет меньшую латентность
У WRITE выше пропускная способность
Использование UD для откликов
Архитектура HERD
Кэширование ключ- значение
Маскирование латентности динамической памяти при помощи предварительной выборки
Запросы
Отклики
Оценки
Настройка эксперимента
Эмуляция Pilaf
Эмуляция FaRM-KV
Рабочие нагрузки
Сопоставление пропускной способности
Сопоставление латентности
Масштабируемость
Использование ЦПУ в HERD
Устойчивость к отклонениям
Связанные работы
Выводы
Приложение C. Рекомендации по разработке высокопроизводительных систем RDMA
Аннотация
Введение
Предпосылки
PCI Express
RDMA
Глаголы и доставка RDMA
RDMA WQE
Терминология и соображения по умолчанию
Рекомендации по разработке RDMA
Уменьшение инициируемых ЦПУ MMIO
Уменьшение инициируемых NIC DMA
Привлечение множества процессоров NIC
Исключение состязательности процессоров NIC
Исключение промахов в кэше
Улучшенная разработка системы
Обзор RPC HERD
Сетевые генераторы последовательности
Особенные для генератора последовательности оптимизации
Латентность
Генераторы основанных на атомарности последовательностей
Хранилища ключ- значение
Улучшение производительности HERD
Атомарные хранилища и хранилища ключ- значение
Факторы нижнего уровня в RDMA
Модели PCIe
Группируемые операции
SEND UD
RECV UD
Обособленные операции
Входящие READ и WRITE
Исходящие READ и WRITE UD
Атомарные операции
Связанные работы
Выводы
Добавление A. Применение WQE-by-MMIO и Doorbell PCI
Указатель

 Предисловие

 Для кого эта книга

 Что охватывает эта книга

Глава 1. Приступая к Redis

Глава 2. Типы данных

Глава 3. Команды Ansible

Глава 4. Разработка с помощью Redis

Глава 5. Репликации

Глава 6. Постоянство

Глава 7. Настройка Высокой доступности и кластера

Глава 8. Развёртывание промышленной среды

Глава 9. Администрирование Redis

Глава 10. Поиск неисправностей Redis

Глава 11. Расширение Redis при помощи модулей Redis

Глава 12. Экосистема Redis

Приложение A. Установка среды Windows

Приложение B. Эффективное применение RDMA для служб ключ- значение Перевод статьи Anuj Kalia, Michael Kaminsky, David G. Andersen Using RDMA Efficiently for Key-Value Services, Carnegie Mellon University, Intel Labs, 2014

SIGCOMM’14, Aug 17-22 2014, Chicago, IL, USA

ACM 978-1-4503-2836-4/14/08.

http://dx.doi.org/10.1145/2619239.2626299

Приложение C. Рекомендации по разработке высокопроизводительных систем RDMA Перевод статьи Anuj Kalia, Michael Kaminsky, David G. Andersen Design Guidelines for High Performance RDMA Systems, Carnegie Mellon University, Intel Labs, 2014

USENIX ATC ’16, June 22–24, 2016 • Denver, CO, USA

978-1-931971-30-0

Open access to the Proceedings of the 2016 USENIX Annual Technical Conference (USENIX ATC ’16) is sponsored by USENIX.

 Как получить максимальную отдачу от этой книги

 Загрузка примеров кода этой книги

Вы можете выгрузить все файлы примеров кода для данной книги из своей учётной записи www.packtpub.com. Если вы приобрели эту книгу в ином месте, будьте добры, пройдите в www.packtpub.com/support и зарегистрируйтесь чтобы иметь эти файлы высланные непосредственно вам по электронной почте.

Вы можете выгрузить все файлы кодов пройдя следующие шаги:

  1. Зайдите зарегистрированным пользователем на www.packtpub.com.

  2. Выберите закладку SUPPORT.

  3. Кликните по Code Downloads & Errata.

  4. Введите название нужной вам книги в блоке Search и следуйте появляющимся на экране инструкциям.

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

  • WinRAR/7-Zip для Windows.

  • Zipeg/iZip/UnRarX для Mac.

  • 7-Zip/PeaZip для Linux.

Пакет кода также размещён на GitHub по адресу https:/​/​github.​com/PacktPublishing/​Learn-​Ansible. Также у нас имеются и другие пакеты кода из нашего богатого каталога книг и видео, доступные по адресу https://github.com/PacktPublishing/. Следите за изменениями!

 Загрузка цветных изображений этой книги

Мы дополнительно снабжаем вас файлом PDF, который содержит цветные изображения экранных снимков/ схем, использованных в данной книге. Цветные изображения помогут вам лучше понять изменения в выводе. Вы можете загрузить этот файл по адресу: http://www.packtpub.com/sites/default/files/downloads/Redis4xCookbook_ColorImages.pdf.

 Соглашения

В данной книге вы найдёте ряд текстовых стилей, которые делают разницу между различными видами информации. Здесь мы приводим некоторые примеры этих стилей и объяснение их назначения.

CodeInText указывает кодовые слова в тексте, имена таблиц базы данных, имена папок, имена файлов, расширения файлов, имена путей, модели URL-адресов, ввод пользователя, и регулировки Twitter. Вот некий пример: "Откройте Терминал и подключитесь к Redis при помощи redis-cli".

Блок кода устанавливается следующим образом:


for i in `seq 10`
do
nohup node generator.js hash 1000000 session:${i} &
done
 	   

Любой ввод командной строки или её вывод записываются следующим образом:


127.0.0.1:6379> SETBIT "users_tried_reservation" 100 1
(integer) 0
 	   

Жирно: указывает новый термин, важное слово которые вы видите на экране, например, в меню или блоках диалогов появляются именно так. Вот пример: "Кликните Import Project from Sources и выберите подкаталог redis-4.0.1 в каталоге coding".

[Замечание]Замечание

Предостережения или важные замечания появляются в блоках подобных этому.

[Совет]Совет

Советы и ловкие приёмы возникают таким образом.

 Будьте на связи

Обращения наших читателей всегда приветствуются.

Обычная обратная связь: Пошлите электронное письмо на адрес feedback@packtpub.com с упоминанием заголовка книги в теме вашего сообщения. Если у вас имеются вопросы относительно любых сторон данной книги, обратитесь, пожалуйста, по адресу questions@packtpub.com.

Ошибки: Хотя мы и предприняли все меры чтобы гарантировать точность содержимого, ошибки могут иметь место. Если вы обнаружили ошибку в данной книге, мы будем вам признательны если вы сообщите нам о ней. Посетите, пожалуйста, www.packtpub.com/submit-errata, выбрав вашу книгу, кликнув на ссылку Errata Submission Form, и заполнив подробности найденной вами ошибки.

Пиратство: Если вы столкнётесь с какой-либо незаконной копией наших работ в любой форме в Интернете, пожалуйста, предоставьте нам сразу адрес местонахождения или имя веб-сайта, чтобы мы могли принять меры. Пожалуйста, обратитесь по адресу copyright@packtpub.com со ссылкой на материалы содержащие признаки нарушения авторских прав. {Прим. пер.: Согласно закону об авторском праве РФ, авторские права на перевод принадлежат авторам этого перевода. Данным переводом, по нашему мнению, мы служим популяризации основных стратегических направлений развития тем Packt. В случае наличия конструктивных предложений, готовы к тесному сотрудничеству.}.

Если вы желаете стать нашим автором: Если у вас существует тема, в которой у вас имеется опыт и вы заинтересованы либо в написании, либо во вкладе в книгу, обратитесь к руководству по адресу authors.packtpub.com.

 Отзывы

Оставляйте, пожалуйста, отзывы. Если вы прочли и воспользовались данной книгой, почему бы вам не оставить отзыв на том сайте, на котором вы её приобрели? Потенциальные читатели затем смогут увидеть и применить ваше беспристрастное суждение чтобы принять решение о приобретении, мы в Packt сможем понять что вы думаете о нашем продукте, а наши авторы увидят обратную связь относительно своей книги. Мы заранее благодарим вас!

Для получения дополнительной информации о Packt посетите, пожалуйста packtpub.com.