Имеет ли смысл использовать php-redis вместо yii\redis\connection?
Возросла нагрузка на проект, начал профилировать и заметил, что почти половина времени уходит на fwrite и fgets, которые вызываются yii\redis\connection. Этот компонент напрочь не использует php расширение redis и конектится напрямую к серверу. Интерфейсы yii\redis\connection и \Redis не совпадают, вот думаю, стоит ли писать адаптер? Что-то мне подсказывает (ожидания во время fgets и fwrite - как я понимаю ожидание ответа от Redis и задержки не связаны с реализацией подключения), что игра не стоит свеч и надо масштабироваться.
Помещаются ли все данные хранимые в Redis в оперативную память?
Настроен ли Redis для регулярных снапшотов на диск?
Ответы "нет", "да" означают что у вас значительно просаживается производительность. В первом варианте очень сильно практически все время , во втором варианте в момент создания снапшотов
top показывает, что более чем 4 гигабайта памяти свободны. Т.е. данные помещаются в память. По второму вопросу видимо да, в настройках стоит
save 900 1
save 300 10
save 60 10000
Expire для кеша я использую. Помимо кеша в redis реализована очередь, вот скрипт, который разгребает эту очередь был остановлен. После чистки очереди база занимает 10-20 мегабайт. Я стараюсь не использовать более одного нового инструмента на проекте. На этом проекте новым был Yii2, а с redis я был знаком (в области использования, но не обслуживания).
У меня малость другая архитектура, редис используется в качестве кеша, и на каждый инстанс бэкэнд php сервера создается на этом же сервере инстанс редиса.
Да, я думал об этом. Но не думаю, что на тестовом сервере без нагрузки возникнут ощутимые разницы. Если ничего не поможет и будет свободное время, напишу адаптер и запущу на одном боевом сервере и сравню с другим, виртуалки одинаковые, нагрузка примерно одинаковая, думаю картина будет объективной.