Кешування даних в оперативній пам'яті за допомогою Redis є одним з методів прискорення роботи сайту. Дане сховище високопродуктивно і може використовуватися для кешування не тільки сайтів, а й сесій, а також в якості нереляційних бази даних.
Установка Redis проводиться в два етапи:
- Підключення сховища backports . Версія в стандартному репозиторії занадто стара.
- Установка командою
aptitude install -t jessie-backports redis-server redis-tools
Зміст статті:
- Настраиваем оптимальную конфигурацию 1 Налаштовуємо оптимальну конфігурацію
- Кэширование php сессий 2 Кешування php сесій
Налаштовуємо оптимальну конфігурацію
В Debian конфігураційний файл розташований в каталозі / etc / redis / і називається redis.conf.
В першу чергу необхідно виправити помилку з некоректно зазначеним максимальною кількістю tcp з'єднань. Це актуально в разі використання tcp-сокетів.
Друкуємо в консолі команду cat /proc/sys/net/core/somaxconn
і виставляємо відповідну кількість:
tcp-backlog 128
Для швидшої роботи підключаємо можливість роботи з unix-сокетом.
unixsocket /var/run/redis/redis.sock unixsocketperm 777
Обмежуємо максимальну кількість підключаються клієнтів. Якщо необхідно більше 1024-х підключень, також буде потрібно змінити обмеження на кількість одночасно відкритих файлів (ulimit).
maxclients тисячі двадцять чотири
Визначаємо кількість виділеної оперативної пам'яті для кеша. У разі зазначення нульового значення, буде використана вся доступнуая оперативну пам'ять для кеша.
maxmemory 64mb
Визначаємо політику роботи з пам'яттю. При цій політиці, під час нестачі пам'яті, будуть видалятися найбільш старі і найменш використовувані ключі, щоб звільнити місце для нових.
maxmemory-policy allkeys-lru
Так само, щоб уникнути проблем з роботою Redis (пункт 3 керівництва , англ), слід відключити функцію ядра Transparent HugePages.
# Echo never> / sys / kernel / mm / transparent_hugepage / enabled
Перезапускаємо для вступу змін в силу.
# Service redis restart
І додаємо в файл /etc/rc.local наступні рядки, щоб після перезавантаження сервера дана функція була відключена.
if test -f / sys / kernel / mm / transparent_hugepage / enabled; then echo never> / sys / kernel / mm / transparent_hugepage / enabled fi if test -f / sys / kernel / mm / transparent_hugepage / defrag; then echo never> / sys / kernel / mm / transparent_hugepage / defrag fi
Кешування php сесій
Налаштувати php на зберігання сесій можна кількома шляхами, в залежності від використовуваної зв'язки.
Безпосередньо в php.ini
[Session] session.save_handler = redis session.save_path = "unix: ///run/redis/redis.sock"
Apache2 і mod_php (в файлі віртуального хоста або apache2.conf)
<IfModule mod_php5.c> php_admin_value session.save_handler "redis" php_admin_value session.save_path "unix: ///run/redis/redis.sock" </ IfModule>
PHP-FPM (в файлі пулу)
php_admin_value [session.save_handler] = "redis" php_admin_value [session.save_path] = "unix: ///run/redis/redis.sock"