Обмен технологиями

Конфигурация и оптимизация Redis

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Реляционные и нереляционные базы данных.

(1) Реляционная база данных

Реляционная база данных — это структурированная база данных, созданная на основе базы данных реляционной модели и ориентированная на записи.

Распространенные реляционные базы данных: Oracle, MySQL, SQL Server, Microsoft Access, DB2.

(2) Нереляционная база данных

NOSQL=Not Only SQL — это общий термин для нереляционных баз данных. В зависимости от способа хранения, структуры хранения и сценариев использования ее называют нереляционной базой данных. Базы данных, отличные от основных реляционных баз данных, можно назвать нереляционными базами данных.

Распространенные нереляционные базы данных: Redis, MongoDB, Hbase, CouhDB.

2. Основы Redis

(1) Введение в Redis

Redis — это база данных Nosql с открытым исходным кодом, написанная на языке C. Она работает на основе памяти и поддерживает постоянную форму хранения. Его номер порта — 6379.

(2) Преимущества Redis

  1. Имеет высокую скорость чтения и записи данных.
  2. Поддерживает расширенные типы данных. ключ-значение, строки, списки, хеши, наборы, упорядоченные наборы.
  3. Поддержка постоянства данных. Данные сохраняются на диске и могут быть загружены и использованы после перезапуска.
  4. Атомный.
  5. Поддержка резервного копирования данных.

3. установка редиса

1. Установите Редис

[root@localhost ~]# systemctl остановить firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y install gcc* zlib-devel

[root@localhost ~]#tar xvzf redis-4.0.9.tar.gz

[root@localhost ~]#компакт-диск redis-4.0.9/

[root@localhost redis-4.0.9]# сделать

Уведомление:

После make будет сгенерировано сообщение об ошибке.

решение:
Решение 1. Используйте make MALLOC=libc, чтобы указать распределитель памяти для компиляции libc.
Решение 2: сделать очистку && сделать distclean

[root@localhost redis-4.0.9]# make PREFIX=/usr/local/redis install
[root@localhost утилиты]# ln -s /usr/local/redis/bin/* /usr/local/bin/

[root@localhost redis-4.0.9]# cd utils/
Среди них: install_server.sh — скрипт инициализации.

[root@localhost утилиты]# ./install_server.sh
Выберите путь к исполняемому файлу redis [] /usr/local/redis/bin/redis-server(укажите путь к исполняемому файлу)

Просмотр контроля процессов и услуг
[root@localhost утилиты]# netstat -anpt | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* СЛУШАТЬ 5360/redis-сервер 1
[root@localhost утилиты]# /etc/init.d/redis_6379 остановить(редис закрыт)
[root@localhost утилиты]# /etc/init.d/redis_6379 запуск(на)
[root@localhost утилиты]# /etc/init.d/redis_6379 статус (состояние)

Изменение параметров конфигурации
[root@localhost ~]#vim /etc/redis/6379.conf
привязка 127.0.0.1 192.168.10.101//Прослушиваем адрес хоста
порт 6379 //порт
демонизировать да //Включаем процесс демона
pid-файл /var/run/redis_6379.pid //Указываем PID-файл
уведомление на уровне журнала//уровень журнала
файл журнала /var/log/redis_6379.log//Указываем файл журнала

[root@localhost~]#/etc/init.d/redis_6379 перезапустить

2.командный инструмент redis

[root@localhost утилиты]# redis-cli(Локальный вход)
[root@localhost утилиты]# redis-cli -h 192.168.10.101 -p 6379(удаленный вход)
192.168.10.101:6379> пинг(Служба обнаружения работает нормально)
ПОНГ

3: инструмент тестирования redis-benchmark

redis-benchmark — это официальный инструмент тестирования производительности Redis, который позволяет эффективно проверять производительность сервисов Redis.

  • -h: указать имя хоста сервера;
  • -p: указать порт сервера;
  • -s: указать сокет сервера;
  • -c: указать количество одновременных подключений;
  • -n: указать количество запросов;
  • -d: указать размер данных значения SET/GET в байтах;
  • -k:1=оставить в живых 0=переподключиться;
  • -r: SET/GET/INCR использует случайные ключи, SADD использует случайные значения;
  • -P: передача через трубу<numreq> просить;
  • -q: принудительно выйти из Redis. Отображаются только значения запроса/сек;
  • --csv: вывод в формате CSV;
  • -l: создать цикл и выполнить тест постоянно;
  • -t: запускать только список тестовых команд, разделенных запятыми;
  • -I: Режим ожидания. Откройте только N простаивающих соединений и подождите.
  • (1) Производительность тестового запроса

    [root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000

    Примечание:

    -h: указать имя хоста сервера;

  • -p: указать порт сервера;

    -c: указать количество одновременных подключений;

    -n: указать количество запросов;

(2) Проверка производительности доступа

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100

Примечание:

-h: указать имя хоста сервера;

-p: указать порт сервера;

-d: указать размер данных значения SET/GET в байтах;

-q: принудительно выйти из Redis. Отображаются только значения запроса/сек;

  1. 4. Общие команды для базы данных Redis

set сохраняет формат команды данных, устанавливает значение ключа

получить формат команды получения данных получить ключ

(1) Команды, связанные с клавишами

1. Добавьте пары ключ-значение

127.0.0.1:6379&gt; набор 1 1
ХОРОШО
127.0.0.1:6379&gt; набор 2 2
ХОРОШО
127.0.0.1:6379&gt; набор 3 3
ХОРОШО

2. Посмотреть все значения в базе данных

127.0.0.1:6379&gt; ключи *
1) "3"
2) "1"
3) "2"

3. Просмотрите данные, начинающиеся с v, в базе данных.
127.0.0.1:6379>КЛЮЧИ v*

4. Просмотрите в базе данных любые данные, начинающиеся с буквы v.

127.0.0.1:6379>КЛЮЧИ v?

5.Просмотрите текущую базу данных с помощью в началоСледующее содержит любые две цифры данных

127.0.0.1:6379>КЛЮЧИ v??

(2) существует

Определите, существует ли значение.

127.0.0.1:6379>существует f5Определить, существует ли f5

(целое число) 1 Результат равен 1, что указывает на наличие клавиши f5.

нравиться

(целое число) 0 Результат — 0, что указывает на то, что клавиша f5 не существует.

(3)дель

дель Команда может удалить указанный ключ

127.0.0.1:6379> дель v5 Удалить v5 в базе данных

(целое число) 1

127.0.0.1:6379>получить v5

(ноль)

(4) тип

использовать тип Команду можно получить ключ соответствующий ценить тип значения

127.0.0.1:6379>тип к1

нить

Примечание:

Типы данных, поддерживаемые Redis

  • String: String — это самый простой тип, представляющий собой обычный набор и получение, используемый для кэширования значений ключей.
  • Хэш: алгоритм хеширования, структура, похожая на карту. Как правило, структурированные данные, такие как объект, можно кэшировать в Redis.
  • Список: список — это упорядоченный список. Вы можете использовать список для хранения некоторых структур данных типа списка, таких как списки поклонников, списки комментариев к статьям и т. д.
  • Set: Set — это неупорядоченная коллекция, которая автоматически удаляет дубликаты.
  • Сортированный набор: Сортированный набор — это отсортированный набор, который дедуплицируется, но может быть отсортирован. При записи выставляется оценка и автоматически сортируется в соответствии с ней.

(5) переименовать

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

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

127.0.0.1:6379>переименовать v22 v2 Переименуйте v22 в v2

ХОРОШО

(6) переименование

переименовать Функция команды заключается в изменении существующего ключ Выполните переименование и проверьте, существует ли новое имя.

использоватьпереименовать При переименовании команды, если цель ключ Если он существует, он не будет переименован.

(7) размер базы данных

размер_базы_данных Цель команды — просмотр текущей базы данных ключ Количество.

127.0.0.1:6379> размер_базы_данных

(целое число) 5

5. Общие команды для нескольких баз данных

(1) Переключение между несколькими базами данных

Редис Включено по умолчанию без каких-либо изменений 16 база данных, имя базы данных — это число 0-15 быть названным по порядку

(1)Переключиться на серийный номер 10 база данных

127.0.0.1:6379>выберите 10

ХОРОШО

(2)Переключиться на серийный номер 15 база данных

127.0.0.1:6379[10]>выберите 15

ХОРОШО

(3)Переключиться на серийный номер 0 база данных

127.0.0.1:6379[15]>выбрать 0

(2) Перемещение данных между несколькими базами данных

127.0.0.1:6379>набор к1 100 Создать k1 ​​в базе данных 0

ХОРОШО

127.0.0.1:6379>получить k1

"100"

127.0.0.1:6379>ход k1 1  //Перемещаем k1 из базы данных 0 в базу данных 1

(целое число) 1

127.0.0.1:6379>выберите 1   //Переключаемся на целевую базу данных 1

ХОРОШО

127.0.0.1:6379[1]>получить k1   //Просмотр перемещенных данных

"100"

127.0.0.1:6379[1]> выбрать 0

ХОРОШО

127.0.0.1:6379> получить k1         //Значение k1 невозможно просмотреть в базе данных 0

(ноль)

(3) Очистить данные в базе данных.

Чтобы очистить текущие данные базы данных, используйте FLUSHDB

Реализация команды; очистить все данные базы данных, использовать ФЛАШОЛЛ Реализация команды.

6. Постоянство Redis

Редис Все данные хранятся в памяти, а затем время от времени асинхронно сохраняются на диск.(Это называетсяПолупостоянный режим”); Вы также можете записать каждое изменение данных в файл. добавить только файл(aof)в(Это называетсяПолный режим сохранения”)

потому что Редис Все данные хранятся в памяти. Если постоянство не настроено,Редис После перезагрузки все данные теряются.Поэтому необходимо включитьРедис Функция сохранения сохраняет данные на диск. Редис После перезагрузки данные можно восстановить с диска.Редис Для обеспечения устойчивости предусмотрены два метода: один РБДRedisБаза Данных Настойчивость (принцип состоит в том, чтобы РидыВременной дамп записей базы данных в памяти (свалка)на диск РБД настойчивость), другой АОФтолько добавить файлНастойчивость (принцип состоит в том, чтобы Риды Журнал работы записывается в файл в виде приложения).

Разница между RDB и AOF

ROB записывает снимок данных на диск в течение указанного интервала времени. Это подпроцесс fork. Сначала он записывает данные во временную папку. После успеха он заменит предыдущий файл и сохранит его с двоичным сжатием.

AOF записывает каждую операцию записи и удаления сервера в форме журнала. Операции запроса не будут записываться, но будут записываться в текстовом виде.

 

Преимущества и недостатки RDB и AOF

Преимущества РДБ:

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

Восстановление данных происходит быстро.

Максимальная производительность

Высокая эффективность запуска

РБДнедостаток:

Данные, которые не были сохранены до выключения, будут потеряны.

       RDB завершается через дочерний процесс разветвления, потребляющий ресурсы.

Преимущества АОФ:

Долговечность данных высокая

В режиме добавления содержимое файла журнала не будет уничтожено даже в случае простоя.

Механизм перезаписи может быть запущен для защиты безопасности данных.

Недостатки АОФ:

Скорость восстановления данных AOF низкая

Эффективность работы АОФ низкая

Критерии выбора между двумя:

Пожертвуйте некоторой производительностью в обмен на более высокую согласованность кэша (АОФ),

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

Примечание:

Если Redies необходимо загрузить файл персистентности после перезапуска,приоритетФайлы AOF будут выбраны.

Если сначала включен RDB, а затем включен AOF и сначала сохраняется RDB, содержимое файла RDB будет перезаписано AOF.

7. Конфигурация персистентности Redis

(1) Конфигурация сохранения RDB

[root@localhost ~]# vim /etc/redis/6379.conf

Открыть 6379.conf После файла выполните поиск сохранять, вы можете увидеть информацию о конфигурации, как показано ниже.

  • save 900 1: Через 900 секунд (15 минут), если изменится хотя бы 1 ключ, сделать дамп снимка памяти.
  • save 300 10: Через 300 секунд (5 минут), если поменялось хотя бы 10 ключей, сделать дамп снимка памяти.
  • save 60 10000: Через 60 секунд (1 минуту), если изменилось хотя бы 10000 ключей, создайте дамп снимка памяти.
  • dbfilename dump.rdb: имя файла RDB ##254 строка
  • dir /var/lib/redis/6379: путь к файлу RDB ##264, строка
  • rdbcompression yes: сжимать ли строку ##242.

(2) Конфигурация сохранения AOF

существовать Редис В файле конфигурации есть три метода синхронизации:

  • только добавление даВключить сохранение AOF (по умолчанию нет) ##673 строка
  • имя_файла_приложения "appendonly.aof" Имя файла AOF ##677 строка
  • # appendfsync всегда
  • appendfsync каждую секунду
  • # appendfsync нет

всегда: синхронное сохранение, каждый раз при изменении данных они немедленно записываются на диск ##702 строка

Everysec: рекомендуется по умолчанию, асинхронная запись каждую секунду (значение по умолчанию).

нет: нет синхронизации, решение о том, как синхронизироваться, остается на усмотрение операционной системы.

  • aof-load-truncated да ##769行

Игнорировать последнюю потенциально проблемную инструкцию.

[root@localhost ~]#/etc/init.d/redis_6379 перезапуск

8. Проблемы с производительностью

(1) Просмотр информации о памяти

192.168.9.236:7001> информационная память

использованная_память:1210776 Размер используемой памяти, в байтах
использованная_память_человека:1.15MОтображается в единицах измерения, в М.
used_memory_rss:7802880Сколько памяти занимает redis с точки зрения операционной системы?
used_memory_rss_human:7.44MДисплей с единицами
макспамять:1073741824Максимальный объем памяти
maxmemory_human:1.00G Дисплей с единицами

(2) Стратегия переработки

maxmemory-политика: Стратегия переработки

 летучий-lru: Это позволяет Редис Выберите наименее использованный из всего набора данных. ключ Удалить

 volatile-ttlУстранить по сроку действия ключа 

 изменчиво-случайный: Случайный выбор данных для исключения из коллекции данных с установленным сроком годности;

 allkeys-lru:использовать ЛРУ Алгоритмы исключают данные из всех наборов данных;

 всеключи-случайно: Случайный выбор данных для исключения из сбора данных;

 нетвыселение: отключить удаление данных (значение по умолчанию).

Установите срок действия ключа

127.0.0.1:6379>истекает v1 10 v1 имеет срок действия 10 секунд.

Примечание:

когда Редис Необходимо восстановить один из-за нехватки памяти ключ час,Редис Первое, что необходимо учитывать, — это не перерабатывать самые старые данные, а те, которые использовались реже всего. ключ или срок действия истекает ключ Выберите один случайным образом из ключ, удалено из набора данных