Кэшаванне дадзеных у аператыўнай памяці з дапамогай 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 1024
Вызначаем колькасць вылучаемай аператыўнай памяці для кэшу. У выпадку ўказанні нулявога значэння, будзе выкарыстана ўся доступнуая аператыўную памяць для кэша.
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"