Перейти к публикации

Redis асинхронное обновление / удаление кеша.


Рекомендованные сообщения

Здравствуйте, есть кто знатоки по Redis?) С 4 версии redis может удалять и обновлять кеш асинхронно, но после настройки конфига, DLE как и удаляла при запросе, так и продолжает... Как заставить, что подкрутить надо в DLE, чтобы кеш асинхронно обновлялся... А то сейчас, redis кеш по факту ничем не отличает от файлового Новость добавили, весь кеш слетает в онлайне, юзеру надо первое открытие сайта по 2 сек ждать...

Ссылка на сообщение
Поделиться на других сайтах

Вообще то DLE и пишет асинхронно кеш в Redis и удаляет также асинхронно. А по 2 секунды первое открытие сайта у вас совершенно не по этой причине и работой кеша и асинхронностью точно не связано.

Как правило такое ожидание связано с тем что у вас есть подключения к чужим внешним серверам, например RSS информеры, какие то другие модули, и какой то из этих сайтов очень медленный и медленно отдает контент. Поэтому после сброса кеша идет долгое получения новой информации чтобы опять записать ее в кеш.

Поэтому источник проблемы нужно не в кеше искать

Ссылка на сообщение
Поделиться на других сайтах

Я пробовал эксперименты, сами новости хорошо открываются при втором открытии и без кеша, как я понял, это благодаря InnoDB буеферу, который кеширует. Но вот в категориях, где много новостей идет долгая выборка... Скажем, в категории 1, 100к новостей, в категории 2 30к новостей (цифры с потолка), так вот первая категория без кеша плоха открывается. Вторая категория гораздо быстрее... В настройках DLE, отключил публикацию новостей на будущую даты и так далее, отключил подсчет новостей и прочее. Никаких плагинов и модулей нет...

Ссылка на сообщение
Поделиться на других сайтах
27 минут назад, chelnovosti_ru сказал:

Я пробовал эксперименты, сами новости хорошо открываются при втором открытии и без кеша, как я понял,

Неправильные у вас эксперименты. И даже при отключении кеша, кеш все равно существует и создается для некоторых обьектов. Соотвественно отключив кеш, его не будет для новостей, но для других обьектов, в том числе для информеров он будет в любом случае, и как следствие быстрое открытие второе, потому как после первого результат помещен в кеш. Кеш есть всегда, его можно выключить для новостей, но не для всего.

29 минут назад, chelnovosti_ru сказал:

Скажем, в категории 1, 100к новостей, в категории 2 30к новостей (цифры с потолка), так вот первая категория без кеша плоха открывается. Вторая категория гораздо быстрее...

Конечно, скорость работы будет зависеть от количества.

28 минут назад, chelnovosti_ru сказал:

как я понял, это благодаря InnoDB буеферу, который кеширует

Буфер InnoDB не имеет никакого отношения к системе кеширования.

Ссылка на сообщение
Поделиться на других сайтах

Все понял, спасибо... Но вот вопрос, ведь по факту, можно же сделать, чтобы обновление/удаление кеша, было фоновым? Сейчас это хоть и выполняется асинхронно, но юзеру в любом случае приходиться ждать, если обновляется кеш. Ну скажем, создался кеш категории, юзер зашел на сайта и буквально до захода, мы добавили новость. Что происходит, старый кеш удаляется и создается новый.... точнее, наоборот... В это время юзер получает информацию из БД. И от этого идет время ожидания, можно ли сделать, чтобы к примеру, пока создается в фоновом режиме кеш, юзеру отдавался старый кеш, а как только новый создаться, то уже и отдавать ему. Тогда все будет отлично, сайты будут летать:) И кеш будет с сотню раз эффективнее работать, нежели сейчас... Видел на других движках такую фичу... А то сейчас новость добавили, кеш весь слетел и пересоздается за ново, хоть и асинхронно, но толку, если юзеру приходиться ждать...

Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, chelnovosti_ru сказал:

Но вот вопрос, ведь по факту, можно же сделать, чтобы обновление/удаление кеша, было фоновым?

Я вам написал еще первым сообщением: "Оно фоновое".

8 часов назад, chelnovosti_ru сказал:

Сейчас это хоть и выполняется асинхронно, но юзеру в любом случае приходиться ждать, если обновляется кеш.

Не ждет пользователь обновления кеша. Он ждет новой!!! информации у вас.

8 часов назад, chelnovosti_ru сказал:

И от этого идет время ожидания, можно ли сделать, чтобы к примеру, пока создается в фоновом режиме кеш

Нельзя так сделать, это не возможно в принципе, и нигде это так не работает. PHP не выполняется асинхронно, поэтому нет подобного. Redis может выполнять команды асинхронно, PHP интерпретатор работает последоватьно выполняя код. В любом случае будет ждать пользователь завершения работы PHP процесса. Неверно вы пытаетесь решить свою проблему. Ее нужно устранять быстрым получением информации, а не пытаться решить ее какими то непонятными обходными путями.

8 часов назад, chelnovosti_ru сказал:

Видел на других движках такую фичу...

Нет таких фич в других движках. Никакие движки не работают так с кешем. 

8 часов назад, chelnovosti_ru сказал:

А то сейчас новость добавили, кеш весь слетел и пересоздается за ново, хоть и асинхронно, но толку, если юзеру приходиться ждать...

Не весь кеш удаляется, а только тот, который влияет на отображение контента в связи с новой информацией.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...