Используйте кеширование в полной мере
Я кэширую результат метода (очевидно, с его сигнатурой), чтобы он не делал сложные запросы в моем хранилище данных каждый раз. Мое кеширование работает отлично.
Мой вопрос:
Как мне найти оптимальное значение времени ожидания для записи в кеше?
Каким должно быть оптимальное количество записей в кеше?
Есть ли другие переменные, которые я могу изменить, чтобы улучшить производительность моего приложения?
Примите различные факторы, влияющие на производительность кеширования, в качестве переменных и получите формулу, которая поможет понять, как я могу оптимизировать свой кеш?
1 ответ
В компьютерной науке есть две серьезные проблемы: аннулирование кэша и присвоение имен. Прежде всего, я был бы уверен, что вам нужен кеш. Это зависит от того, какой тип хранилища данных вы используете (по-видимому, redis). Если бы это была традиционная СУБД, то лучше было бы сначала убедиться, что ваша стратегия индексирования была жесткой. Проблема с введением кеширования состоит в том, что в какой-то момент, скорее, чем позже, и много раз после этого, вы получите несогласованный кеш. Аннулирование кэша не является атомарным с обновлениями вашего хранилища данных, поэтому что-то будет запускать сообщение о недействительности, но не достигнет пункта назначения, и ваш кэш будет устаревшим. Так что будьте уверены, что вам нужно это кэширование, прежде чем вводить его. С точки зрения тайм-аута кеша - чем раньше, тем лучше. Час это здорово, день меньше. Если что-то не синхронизируется, это исправит себя, а не вызовет постоянные проблемы. Кроме того, если вы устанавливаете тайм-ауты кеша на неделю или более, тогда ваш кеш начнет работать как хранилище данных, все свое собственное; если он выйдет из строя и вам придется его перестроить, то вы сильно пострадаете. Так что в этом случае меньше значит больше. Наконец, убедитесь, что вы действительно установили тайм-аут кэша для всего, что входит в ваш кэш. С memcache слишком просто просто не иметь даты истечения по умолчанию, и в этом случае ваш кэш действительно начнет работать как хранилище данных. Не позволяй этому случиться; Я был там и ждал неделю, пока твой сайт восстановится, это не весело.