Установка, настройка, оптимизация хранилища Redis

Redis — NoSQL хранилище типа "ключ/значение", является хранилищем данных в памяти, обычно используется в качестве базы данных, кэша и брокера сообщений. Поддерживаются различные структуры данных, такие как строки, хэши, списки, наборы.

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

  • высокая скорость;
  • GitHub, Weibo, Pinterest, Snapchat, Craigslist, Digg, StackOverflow, Flickr выбрали это хранилище;
  • поддерживается практически всеми языками программирования, в том числе JavaScript, Java, Go, C, C++, C#, Python, Objective-C, PHP;
  • имеет открытый исходный код.

Redis легко устанавливается Как установить Redis в Docker.

Чтобы проверить, что Redis работает, воспользуйтесь командной строкой Redis. Для доступа к командной строке используйте команду redis-cli.

redis-cli

Примечание: Если вы уже установили пароль для Redis, авторизуйтесь после установки соединения с помощью auth.

auth your_redis_password

Ответ: OK

Проверьте соединение с сервером с помощью команды ping:

Если Redis работает правильно, вы увидите ответ: PONG

Место хранения логов настраивается в конфигурационном файле redis.conf (/etc/redis/redis.conf).

Откройте этот файл:

sudo nano /etc/redis/redis.conf

Найдите строку logfile:

logfile /var/log/redis/redis-server.log

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

Если логи не находятся в указанных выше каталогах, попробуйте найти файлы при помощи команды find в каталоге /var/logs.

find /var/log/* -name *redis*

Самый простой способ очистить кеш Redis - использовать команду redis-cli. Базы данных в Redis хранятся индивидуально. Использование команды redis-cli позволяет удалить ключи либо из всех баз данных, либо только из одной указанной базы данных.

redis-cli [номер базы данных] [опция]

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

Чтобы удалить ключи из всех баз данных Redis, используйте следующую команду:

redis-cli flushall

Начиная с версии 4.0.0, Redis может очищать ключи в фоновом режиме, не блокируя ваш сервер. Для этого используйте команду flushall с параметром async:

redis-cli flushall async

Краткий ответ:

echo 1 > /proc/sys/vm/overcommit_memory

И тоже самое, если хотите, чтобы изменение сохранилось и после перезагрузки сервера, добавьте строку в /etc/sysctl.conf:

vm.overcommit_memory = 1

И перечитайте конфиг:

# sysctl -p

Расширенный ответ из Redis FAQ.

Схема фонового сохранения Redis основана на семантике копирования при записи системного вызова fork в современных операционных системах: Redis разветвляется (создает дочерний процесс), который является точной копией родителя. Дочерний процесс сбрасывает БД на диск и, наконец, завершает работу. Теоретически дочерний процесс должен использовать столько же памяти, сколько и родитель, являющийся копией, но на самом деле благодаря семантике копирования при записи, реализованной в большинстве современных операционных систем, родительский и дочерний процессы будут совместно использовать общие страницы памяти. Страница будет дублироваться только при ее изменении в дочерней или родительской. Поскольку теоретически все страницы могут изменяться во время сохранения дочерним процессом, Linux не может заранее сказать, сколько памяти займет дочерний процесс, поэтому, если для параметра overcommit_memory установлено значение 0, fork не удастся, если не будет столько свободной оперативной памяти. как требуется, чтобы действительно дублировать все родительские страницы памяти. Если у вас есть набор данных Redis размером 3 ГБ и всего 2 ГБ свободной памяти, произойдет сбой.

Установка overcommit_memory в 1 говорит Linux расслабитьсяLOL и выполнить форк более оптимистичным:-) способом распределения.

PQ VPS сервера в 28+ странах.
Dolphin anty. Инглекс (Englex) — онлайн школа английского языка.