Яндекс.Практикум

Установите и настройте Redis в CentOS 8

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

Это руководство поможет Вам, установить и настроить Redis на CentOS 8.

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

Remi – давнее и пользующееся доверием сообщества репозиторий для CentOS.

dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y

sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y

Посмотрим все доступные пакеты Redis в репозитории Remi.dnf module list | grep redis

sudo dnf module list | grep redis

Результат должен выглядеть примерно так:

redis 5 [d] common [d] Redis persistent key-value database
redis remi-5.0 common [d] Redis persistent key-value database
redis remi-6.0 common [d] Redis persistent key-value database

Предположим, что последняя основная версия – 6.0, установите эту версию:

sudo dnf module install redis: remi-6.0 -y

sudo dnf module install redis: remi-6.0 -y

Включите автозапуск Redis во время загрузки.

$ sudo systemctl enable redis.service

Запускаем Redis.

$ sudo systemctl start redis.service

2. Настройка Redis

Откроем файл конфигурации Redis:

$ sudo nano /etc/redis.conf

Установите желаемый объем памяти для вашего приложения.

maxmemory 128mb

По умолчанию при достижении значения maxmemory, Redis прекращает запись новых данных. Если вы хотите, чтобы Redis записывал новые данные, автоматически удаляя старые, вы должны указать Redis, как их удалить. Политика allkeys-lru – хороший выбор для большинства пользователей. Добавьте следующую строку:

maxmemory-policy allkeys-lru

Почитать о различных методах Eviction можно по данной ссылке.

Установите политику сохранения на диск.

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

Настройки по умолчанию:

save 900 1
save 300 10
save 60 10000

Значит, что произойдет сохранение:

  • через 900 сек (15 мин), если была изменена хотя бы 1 ключ
  • через 300 сек (5 мин), если было заменено не менее 10 ключей
  • через 60 сек при замене не менее 10000 ключей

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

# save 900 1
# save 300 10
# save 60 10000

Сохраните и закройте файл конфигурации, затем перезапустите Redis, чтобы изменения вступили в силу.

$ sudo systemctl restart redis.service

3. Дополнительная настройка системы

Проверьте файл журнала Redis:

$ sudo tail /var/log/redis/redis.log

Вы увидите такую ​​информацию:

5228:M 15 Sep 2020 14:14:29.133 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
5228:M 15 Sep 2020 14:14:29.133 # Server initialized
5228:M 15 Sep 2020 14:14:29.133 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
5228:M 15 Sep 2020 14:14:29.133 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.

Чтобы исправить первое предупреждение, введите следующую команду.

$ echo 'net.core.somaxconn = 512' | sudo tee -a /etc/sysctl.conf> / dev / null

Чтобы исправить второе предупреждение, введите следующую команду.

$ echo 'vm.overcommit_memory = 1' | sudo tee -a /etc/sysctl.conf> / dev / null

Перезагрузите значения sysctl.

$ sudo sysctl -p

Чтобы исправить последнее предупреждение, вам нужно отключить hugepages во время загрузки перед запуском службы Redis.

Создайте новый файл сценария:

$ sudo nano /usr/bin/disable-transparent-hugepage

Вставьте в файл следующий текст:

#!/bin/bash
echo never > /sys/kernel/mm/transparent_hugepage/enabled
exit 0

Сохраните и закройте файл, затем задаем необходимые права

$ sudo chown root:root /usr/bin/disable-transparent-hugepage
$ sudo chmod 770 /usr/bin/disable-transparent-hugepage

Cоздаем файл конфигурации для службы systemd, который будет вызывать скрипт во время загрузки:

$ sudo nano/etc/systemd/system/disable-transparent-hugepage.service

Вставьте в файл следующий текст:

[Unit]
Description=Disable Transparent Huge Pages (THP) for Redis.
Before=redis.service

[Service]
Type=exec
ExecStart=/usr/bin/disable-transparent-hugepage

[Install]
WantedBy=multi-user.target

Сохраните и закройте файл, затем включите службу:

$ sudo systemctl enable disable-transparent-hugepage.service

4. Проверка работы сервиса

Перезагрузите сервер Redis:

$ sudo reboot

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

$ sudo tail /var/log/redis/redis.log

Используйте программу redis-cli для подключения к Redis по адресу 127.0.0.1 и порту 6379.

$ redis-cli -h 127.0.0.1 -p 6379

Если соединение установлено успешно, вы увидите командную строку Redis:

127.0.0.1:6379>

Введите несколько команд:

set testkey testvalue
get testkey
exit

Если вы видите следующий результат, значит, Redis работает правильно.

127.0.0.1:6379> set testkey testvalue
OK
127.0.0.1:6379> get testkey
"testvalue"
127.0.0.1:6379> exit
[Unit]
Description=Disable Transparent Huge Pages (THP) for Redis.
Before=redis.service

[Service]
Type=exec
ExecStart=/usr/bin/disable-transparent-hugepage

[Install]
WantedBy=multi-user.target
[Unit]
Description=Disable Transparent Huge Pages (THP) for Redis.
Before=redis.service

[Service]
Type=exec
ExecStart=/usr/bin/disable-transparent-hugepage

[Install]
WantedBy=multi-user.target

Понравилась статья? Поделиться с друзьями:
IPCalc Blog
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: