2010-10-08 3 views
0

У меня есть прокси-сервер mysql, который принимает запрос, выполняет md5 на нем и кэширует результат в memcached DB. проблема возникает, когда в приложении rails происходит обновление, которое приведет к недействительности этого кеша. Любые идеи о том, как в то время лишить вас всех правильных ключей в кеше?Истекает memcached с использованием прокси-сервера mysql при обновлении?

ответ

0

Ядро проблемы, вы не знаете, что такое ключ, так как он генерируется md5.

Однако вы можете устранить проблему, не сохраняя данные для этого запроса.

Вы запрос может выглядеть следующим образом "SELECT my_data. * FROM my_data WHERE условия"

Однако, вы можете уменьшить redudeancy данных с помощью этого запроса вместо

ВЫБОР my_data.id ОТ my_data WHERE условия

который затем последовать

Memcache.mget (идентификаторы)

Это не будет запрещать возврат данных, которые больше не соответствуют условиям, но могут смягчать возврат устаревших данных.

-

Другой вариант посмотреть в использовании пространств имен: Смотрите здесь:

http://code.google.com/p/memcached/wiki/NewProgrammingTricks#Namespacing

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

Логично грязный, но вы можете использовать его по нескольким плохим запросам.

-

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

+0

Я думаю, что пространства имен Memcahed - это путь к этому экземпляру, так как несколько дополнительных вызовов MYsql для извлечения последнего ключа лучше, чем запуск 20-секундного запроса mysql в процессе производства. – tesserakt

Смежные вопросы