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

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

2024-07-12

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

1. Общее сравнение Redis и Memcache

1.Производительность

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

Memcached: вы можете использовать несколько ядер, а при объеме данных более 100 тыс. производительность Memcached выше, чем у Redis.

2. Эффективность использования памяти

MemCached: Memcached использует простое хранилище значений ключей и обеспечивает более высокую эффективность использования памяти.

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

3. Объем памяти и размер данных

MemCached: максимальный объем памяти можно изменить с помощью алгоритма LRU. Размер одного значения ключа в Memcached ограничен, а значение поддерживает максимум 1 МБ.

Redis: добавляет функции виртуальной машины и преодолевает ограничения физической памяти. Redis поддерживает максимальный размер одного значения ключа 512 МБ.

4. Поддержка структуры данных

MemCached: единая структура данных, используемая только для кэширования данных.

Redis: поддерживает более широкие типы данных. Redis не только поддерживает простые данные типа k/v, но также обеспечивает хранение таких структур данных, как список, набор, zset и хэш.

Богатые операции с данными могут выполняться непосредственно на стороне сервера, что позволяет сократить время ввода-вывода в сети и объем данных.

5.Надежность

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

Redis: предъявляет высокие требования к надежности, поддерживает сохранение и восстановление данных, допускает наличие единых точек отказа, а также влияет на некоторую производительность. Поддерживает резервное копирование данных, то есть резервное копирование данных в режиме «главный-подчиненный». Redis поддерживает сохранение данных и может сохранять данные в памяти на диск и снова загружать их для использования при перезапуске.

6. Сценарии применения

Memcached: снижает нагрузку на базу данных и повышает производительность динамического кэша, подходит для сценариев большего чтения, меньшего количества записи и больших объемов данных;

Redis: подходит для систем, которым требуется высокая эффективность чтения и записи, сложная обработка данных и высокие требования к безопасности.

2. Экспериментальные случаи

1. установка Redis

Сначала отключите брандмауэр

  1. 先把防火墙关掉
  2. systemctl stop firewalld
  3. set setenforce 0
  4. [root@localhost ~]# yum -y install gcc* zlib-devel
  5. 解压 redis包
  6. [root@localhost ~]# tar xvzf redis-4.0.9.tar.gz
  7. [root@localhost ~]# cd redis-4.0.9/
  8.  make

  1. 2:查看进程
  2. [root@localhost utils]# netstat -anpt | grep redis

  1. 3:redis服务控制
  2. [root@localhost ~]#/etc/init.d/redis_6379 stop
  3. [root@localhost ~]#/etc/init.d/redis_6379 start
  4. [root@localhost ~]#/etc/init.d/redis_6379 restart
  5. [root@localhost ~]#/etc/init.d/redis_6379 status

  1. 4.配置参数的修改
  2. [root@localhost ~]#vim /etc/redis/6379.conf
  3. bind 127.0.0.1 192.168.10.101 //监听的主机地址
  4. port 6379 //端口
  5. daemonize yes //启用守护进程
  6. pidfile /var/run/redis_6379.pid //指定 PID 文件
  7. loglevel notice //日志级别
  8. logfile /var/log/redis_6379.log //指定日志文件
  9. [root@localhost~]#/etc/init.d/redis_6379 restart
  10. [root@localhost utils]# netstat -anpt | grep redis

  1. 二:Redis 命令工具
  2.  redis-server:用于启动 Redis 的工具;
  3.  redis-benchmark:用于检测 Redis 在本机的运行效率;
  4.  redis-check-aof:修复 AOF 持久化文件;
  5.  redis-check-rdb:修复 RDB 持久化文件;
  6.  redis-cli:Redis 命令行工具。

Общие команды Redis:

установить создать
получить просмотр
ключи * посмотреть все
переименовать (перезаписать)
renamenx (проверьте, есть ли такое же имя, а затем решите, следует ли выполнять команду переименования)
del (команда может удалить указанный ключ текущей базы данных)
существует (команда может определить, существует ли значение ключа)
тип (используйте команду type, чтобы получить тип значения, соответствующий ключу)
выбрать (переключить базу данных)
переместить (переместить данные)
flashdb (очистить текущие данные базы данных)
flashall (очистить все данные базы данных)

  1.  -p:指定服务器端口;
  2.  -s:指定服务器 socket;
  3.  -c:指定并发连接数;
  4.  -n:指定请求数;
  5.  -d:以字节的形式指定 SET/GET 值的数据大小;
  6.  -k:1=keep alive 0=reconnect;
  7.  -r:SET/GET/INCR 使用随机 key, SADD 使用随机值;
  8.  -P:通过管道传输<numreq>请求;
  9.  -q:强制退出 redis。仅显示 query/sec 值;
  10.  --csv:以 CSV 格式输出;
  11.  -l:生成循环,永久执行测试;
  12.  -t:仅运行以逗号分隔的测试命令列表;
  13.  -I:Idle 模式。仅打开 N 个 idle 连接并等待。

Пятое: постоянство Redis

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

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

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

(1) Что такое РБД?

Метод по умолчанию

Сохранение RDB — это процесс создания моментального снимка текущих данных процесса и сохранения его на жестком диске. Процесс запуска сохранения RDB делится на запуск вручную и автоматический запуск.

Механизм триггера: Ручной триггер соответствует командам save и bgsave соответственно.

Команда save: блокирует текущий сервер Redis до завершения процесса RDB. Для экземпляров с большим объемом памяти это приведет к блокировке по времени. Не рекомендуется использовать в онлайн-среде.

Команда bgsave: процесс Redis выполняет операцию разветвления (функцию, используемую для создания процесса) для создания дочернего процесса. Процесс сохранения RDB отвечает за дочерний процесс и автоматически завершается после завершения. Блокировка происходит только во время фазы форка.

(2) Преимущества и недостатки РБД:

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

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

Redis загружает RDB и восстанавливает данные намного быстрее, чем метод AOF.

Недостатки РБД:

Данные в режиме RDB не могут сохраняться в режиме реального времени или сохраняться на втором уровне. Потому что каждый раз, когда запускается bgsave, выполняется операция ветвления для создания дочернего процесса, а это тяжелая операция, и стоимость частого выполнения слишком высока.

Файлы RDB сохраняются в определенном двоичном формате. В процессе развития версий Redis существует несколько форматов версий RDB. Возникла проблема: старая версия службы Redis несовместима с новой версией формата RDB.

2. Что такое АОФ?

Постоянство AOF (только добавление файла): записывайте каждую команду записи в независимый журнал, а затем повторно выполните команду в файле AOF, чтобы восстановить данные при перезапуске. Основная функция AOF — решение проблемы сохранения данных в реальном времени. Сейчас это основное направление сохранения Redis.

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

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

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

Примечание:

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

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

3. Конфигурация персистентности 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

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

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

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

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

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

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

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

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

(2) Переписывание AOF

чтобы решить АОФ Если размер файла продолжает увеличиваться, пользователи могут сообщить об этом в Редис отправлять BGREWRITEAOFЗаказ.BGREWRITEAOF Команда будет удалена через АОФ избыточные команды в файле для переопределения (переписатьАОФфайл, сделать АОФ Сохраняйте размер файла как можно меньшим.

127.0.0.1:6379&gt; bgrewriteaof

Фоновое добавление только перезапись файла началась

# Когда журнал BGREWRITEAOF,еслинет-appendfsync-on-rewriteУстановите значение «да», что означает, что новые операции записи не будут синхронизироваться с fsync, а будут лишь временно сохраняться в буфере. , чтобы избежать конфликтов операций ввода-вывода с диска, перед записью дождитесь завершения перезаписи. По умолчанию в Redis нет.

нет-appendfsync-on-rewrite нет

# Когда текущий размер файла AOF в два раза превышает размер файла AOF во время последней перезаписи журнала, выполняется операция BGREWRITEAOF.

авто-аоф-перезапись-процент 100

Примечание:

100ОтноситсяаофКоэффициент роста файла относится к коэффициенту роста текущего файла AOF по сравнению с последней перезаписью.100в два раза

#Минимальное значение текущего файла AOF для выполнения команды BGREWRITEAOF, чтобы избежать частого использования BGREWRITEAOF из-за небольшого размера файла при первом запуске Reids.

авто-аоф-перезапись-мин-размер 64мб

Шесть: Управление производительностью

1: просмотр информации о памяти

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

Used_memory:1210776 #Размер используемой памяти,в байтах
Used_memory_human:1.15M # Отображение с единицей измерения,в М
Used_memory_rss:7802880 # Сколько памяти занимает Redis с точки зрения операционной системы?
Used_memory_rss_human:7.44M # Отображение с блоком
maxmemory:1073741824 # Максимальный размер памяти
maxmemory_human:1.00G # Дисплей с устройством

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

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

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

Ø volatile-ttlв соответствии сключсрок годности для ликвидации

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

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

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

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

Примечание:

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

истекает v1 10

v1 имеет срок действия 10 секунд.

Примечание:

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

установить пароль Redis

1. Метод настройки

Способ 1. Установите пароль через файл конфигурации redis.conf.

Найдите ключевое слово requirepass, за которым следует пароль. По умолчанию оно закомментировано, то есть пароль по умолчанию не требуется, как показано ниже:

  

 Откройте комментарий, установите его в качестве своего пароля и перезапустите.

Способ 2. Установите пароль, назвав его.

Используйте redis-cli для подключения к Redis и выполните следующую команду

config set requirepass 123456

После завершения выполнения перезагрузка не требуется. Вам нужно будет ввести пароль при выходе из клиента и повторном входе.

2. Способ подключения

1. Введите пароль при подключении

[root@localhost bin]# ./redis-cli -a 123456

2. Сначала подключитесь, а затем введите пароль.

[root@localhost bin]# ./redis-cli127.0.0.1:6379> auth 123456

3. Метод закрытия

[root@localhost bin]# ./redis-cli -a 123456 shutdown

4. Разница

1) Пароль, установленный путем изменения файла конфигурации, вступит в силу навсегда; пароль, установленный с помощью этой команды, вступит в силу временно и станет недействительным после перезапуска.

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

3) Приоритет команды выше приоритета файла конфигурации