Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кеширование отдельных объектов 
:(
    Опции темы
qsajeal
Дата 5.7.2009, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 4.8.2008

Репутация: нет
Всего: нет



Доброго времени суток!!!

Есть проблема.
Допусти у нас выводится список топиков. Эти топики связаны с другими объектами (пользователи, их автары, блоги и т.д.) Если мы выберем скажем 50 топиков одним запросом с кучей джоинов и закешируем его, то, например, когда у нас изменится аватар одного из пользователей, то нам прийедтся сбрасывать кеш для ВСЕХ подобных пачек с топиками.

Вопрос как этого избежать? Как построить кеширование, чтобы при изменении аватара - сбрасывался кеш только топиков этого автора?

Я предлагал такое решение: сначала выбираются айдишники этих объектов, а потом в соответствии с этим списком выбираются объекты поштучно. Т.е. 50+1 запрос.  Если выбирать только ID, то наверное можно добиться их поиска только по индексу (covering), хотя это сложно тоже достаточно...

А как ВЫ решаете эту проблему?


PM MAIL   Вверх
skyboy
Дата 5.7.2009, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(qsajeal @  5.7.2009,  10:10 Найти цитируемый пост)
то, например, когда у нас изменится аватар одного из пользователей

как организуется кеш?
в течене какого времени он живет - на время формирования одной страницы или ограниченное время?
PM MAIL   Вверх
qsajeal
Дата 5.7.2009, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 4.8.2008

Репутация: нет
Всего: нет



>как организуется кеш?

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

>в течене какого времени он живет - на время формирования одной страницы или ограниченное время? 

Никакого. Кеш вечен. Кеш должен сбрасываться при изменении объекта только, либо пачки объектов.

Я вот кроме как способа с кешированием отдельных объектов ничего придумать не могу. Т.е. Кеш пачки (с айдишниками объектов)+ много кешей каждого из объектов.
Но это не кошерно как-то 100 запросов в мемкеш на 100 комментов, поэтому и спрашиваю вас.
PM MAIL   Вверх
skyboy
Дата 6.7.2009, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(qsajeal @  5.7.2009,  16:25 Найти цитируемый пост)
в мемкеш

о, значит, memcache.
в таком случае(теоретическое предположение - с memcache я не работал), можно использовать механизм тегов. и всему, что кешируется для объекта "пользователь #100" задавать соответствующий тег. И при изменении информации сбрасывать кеш только для элементов с соответствующим тегом.
PM MAIL   Вверх
qsajeal
Дата 6.7.2009, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 4.8.2008

Репутация: нет
Всего: нет



Мда уж... Если вы внимательно прочтитаете мой вопрос, то поймете какую глупость написали... (извините за резкость)

Теги не обязательно для мемкеша только. Их можно сделать и для файлов и APC и чего хочешь. Это лишь отдельные key-value пары с информацией.
Здесь вопрос совсем в другом. 

Чтобы сбросить пачку комментов для данного топика нам надо сделать к нему 100 тегов всех юзеров, 100 тегов всех аватаров и т.д. Ну поняли? Чтоб не сбрасывать кеш для комментов ВСЕХ топиков,а тольк для топиков, у которых комменты добавил данный юзер, изменивший аватар.
А в реальных проектах таких связей ОЧЕНЬ много (здесь только для примера комменты)

Добавлено через 5 минут и 26 секунд
Надеюсь почему 200 тегов к одному  кешу - зло - вам понятно.

Это сообщение отредактировал(а) qsajeal - 6.7.2009, 13:49
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0675 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.