Я работаю над некоторым старым (ish) программным обеспечением на PHP, которое поддерживает массив $ cache, чтобы уменьшить количество SQL-запросов. Я думал просто положить memcached на свое место, и мне интересно, избавиться от внутреннего кэширования или нет. Будет ли еще увеличение производительности, если я сохраню внутреннее кэширование или хватит на memcached?memcached против внутреннего кэширования в PHP?
ответ
Похоже, что memcache (который реализован на металле) будет быстрее, чем какая-либо интерпретируемая php схема кэширования.
Однако: если он не сломан, не исправляйте его.
Если вы удалите код пользовательского кэширования, вам, возможно, придется иметь дело с другим кодом, который зависит от кеша. Я не могу говорить о качестве кода, который вы должны поддерживать, но похоже, что это одно из тех, «вероятно, не стоит».
Позвольте мне сказать так: Доверять ли оригинал (-ы) разработчику, чтобы он написал код, который будет работать, если вы вырвите кеширование? (я, вероятно, не стал бы)
Так что, если существующее кэширование не дает вам проблем, я бы рекомендовал не принимать его.
Как вы думаете, что Memcache будет быстрее интерпретируемой системы (в общем)? Это связано с TCP-связью ... Memcache быстрее, чем запрос к БД, так как оба попали в сеть, но это не обязательно быстрее, чем чтение php-файла с диска ('$ foo = include ('myfoofile.php');' где myfoofile. php содержит ' php return array ('blah', 'blah', 'blah');'). Оба требуют выделения памяти, но только файл php может использовать локальный кеш-код операции ... – ircmaxell
Отличный совет ... ситуация в том, что ведущий разработчик ушел и оставил меня (нового парня!) Беспорядок недокументированного кода ,Кэширование вообще не инкапсулировано, это глобальная переменная, на которую тысячи раз ссылаются на код, который действительно влияет на читаемость и запах плохого дизайна, поэтому с точки зрения архитектуры (на мой взгляд!) Это нарушено :-) – bcoughlan
@ircmaxell: Я предполагаю, что оба попали в сеть, потому что его вопрос касается доступа к базе данных. – Kris
Там есть преимущество в использовании кэша памяти против локального кэширования, если:
1) вы имеете Mulitple вебсервер убегал ту же базу данных, и Memcache настроить для запуска на нескольких узлах
2) база данных делает не выполнять кэширование результатов запроса или очень медленно получить доступ
В противном случае, если код кеширования не очень плохой, вы не должны ожидать значительного выигрыша в производительности.
НТН
C.
Согласно this блоге, внутренний массив PHP является способ быстрее, чем любой другой метод:
Cache Type Cache Gets/sec
Array Cache 365000
APC Cache 98000
File Cache 27000
Memcached Cache (TCP/IP) 12200
MySQL Query Cache (TCP/IP) 9900
MySQL Query Cache (Unix Socket) 13500
Selecting from table (TCP/IP) 5100
Selecting from table (Unix Socket) 7400
У меня много таких кеш-памяти. Это действительно быстрее. Тем не менее, я вводя MemCache медленно по двум причинам: 1) Некоторые из этих массивов дублируются каким-то образом по другим сценариям, используя MemCache, объединив это 2). Хотя массивы быстрее, они потребляют память и чем больше массив, тем больше памяти. И MemCache достаточно быстр. ** В заключение: Для меня я решил использовать MemCache. Иногда я сохраняю оба на некоторое время, добавляю комментарий TODO и удаляю массив через пару недель. Надеюсь, это поможет – tanovellino
Redis также очень интересен, особенно с возможностью хранения данных на диске и возможностью простой синхронизации данных между несколькими серверами. И если вы хотите действительно высокую производительность с помощью php, я рекомендую изучить [Swoolle] (https://github.com/swoole/swoole-src). Вы получите чрезвычайно низкое время отклика для любой кешированной страницы (на моем компьютере, redis кэшированные html-страницы загружаются в ~ 2 мс с помощью swoole, вместо ~ 10 мс с традиционным php 7 - сервер [h2o] (https: // h2o. examp1e.net/) в обоих случаях страницы были загружены в firefox). –
- 1. Хранилище кэширования http-кэша в memcached
- 2. Способ кэширования всех запросов db в memcached
- 3. Mysql - результаты кэширования с использованием temp. Таблицы/PHP сценарии (? Memcached)
- 4. Memcached: expires_in на Heroku для кэширования фрагментов
- 5. PHP memcached или Nginx memcached
- 6. методы кэширования в php?
- 7. PHP-код застрял в кеше [Memcached] (WordPress)
- 8. Внешний Iterator против внутреннего итератора
- 9. Хранение базы данных запросов API против memcached
- 10. Memcached против APC, который я должен выбрать?
- 11. Настройка констант Memcached в PHP
- 12. Основная реализация Memcached в PHP
- 13. Memcached PHP на lampp
- 14. PHP: tmpfs vs memcached
- 15. Memcached для PHP 5.3
- 16. PHP Memcached вопрос
- 17. PHP Срок действия Memcached
- 18. Результат обновления PHP memcached
- 19. PHP Active Record Memcached
- 20. Установить php-pecl-memcached
- 21. Memcached - информация кэширования, которая должна быть синхронизирована с DB
- 22. PHP Memcached ошибки
- 23. PHP таймаут Memcached Подключение
- 24. php, memcached, двоичный протокол
- 25. PHP Memcached isset
- 26. В PHP, Memcached (родная библиотека) такая же, как Memcached?
- 27. Рельсы - etags против кэширования страниц (кеш файлов)
- 28. Оптимизация ресурсов Frontend: запросы против кэширования
- 29. Java System Кэширования MaxLife против MaxLifeSecond
- 30. JSR 107 - Кэширование (JCache) против кэширования процессора
Benchmark различные подходы в объеме приложения и посмотрим, что произойдет. – salathe
Как он поддерживает массив '$ cache' для просмотра страниц? Сериализовано ли оно в файл? Он хранится в APC/Eaccelerator/Memcached/DB/etc? – ircmaxell
Кажется, что нынешний подход бесполезен и нуждается в пересмотре. Каково использование кеша в одном сценарии выполнения? Это похоже на более плохой дизайн, чем реальная потребность в кеше. Действительно ли это приложение требует кэширования? –