Redis может обрабатывать гораздо больше запросов, чем MySQL, поэтому он так часто используется в качестве кеша для него. На аппаратном уровне ноутбука я видел, что он обрабатывал более 1 млн запросов в секунду - один экземпляр не настраивал на стороне сервера.
Сначала попробуйте вытащить данные из redis. Если соединение не удается, перейдите в MySQL. если вы получите нулевую обратную связь, перейдите в MySQL и добавьте данные в Redis (опционально с тайм-аутом в зависимости от ваших критериев) и верните данные клиенту.
Пожалуйста, не делайте пинг перед каждой командой. Если у вас есть действующее соединение, попробуйте получить данные и обработать их обратно. Получение нулевого возврата означает, что данных не было. Выполнение пинга перед каждой командой является расточительным. Вы проводите поездку туда и обратно для каждого звонка. Часто команда получать данные просто или почти так же быстро, как и ping, особенно учитывая стоимость тестирования для понга. Если учесть, что вы затем будете также, проверьте, были ли вы получены данные, пинг перед каждой моделью команды не является разумным.
Откройте соединение в своем долгосрочном процессе за пределами команды или откройте запрос, , а затем закройте свою розетку. Я предпочитаю первое, но понимаю, что это не всегда возможно в зависимости от используемой структуры.
И как человек, у которого есть инфраструктура со многими сотнями серверов MySQL с тысячами БД, нет, вы не всегда можете предположить, что MySQL есть, так же, как вы не должны предполагать, что Redis всегда будет там. Аварии случаются, происходят сети, серверы сбиваются или ошибочно отскакивают.
Но вы можете следить за потоком «есть соединение TCP в живом» и «затем дать мне данные», а затем подтвердить, что вы получили данные. До тех пор, пока у вас возникнут проблемы с неудачными подключениями или запрошенными запросами, и обрабатывайте их, вы в порядке.
Насколько как на самом деле код с помощью predis, я рекомендую начать с Документами, которые встречаются в the Predis github page
А что, если MySQL также не доступный? Ваш подход нарушен: если пользователь/admin предоставил вашему коду конфигурацию для Redis, предположите, что он есть и должен использоваться. Если нет, справитесь с этим, например. путем отказа и жалобы на неправильную конфигурацию. – Sven
В чем вопрос? Какой лучший метод вы пробовали? – hakre
Прошу прощения за ошибку. Теперь я пытаюсь найти лучший метод.Mysql всегда доступен, но если будет слишком много запросов, у redis будут проблемы со всеми из них, и в этот момент я хочу переместить часть запросов в mysql. Поэтому я стараюсь знать, может ли redis обрабатывать запрос или нет. – aieven