2013-11-24 2 views
1

У меня есть база данных mysql с миллионами записей в ней. и я хочу использовать Redis для повышения производительности. Я уже читал о Redis и некоторых его командах.
Но я не могу понять, как работает redis. Я имею в виду, насколько я знаю, я могу использовать Redis для кэширования данных MySQL. Но как Redis будет знать о новых записях, поскольку это последнее время кэширования. (Я думаю, что Redis также будет извлекать данные из mysql для их кэширования - так что это выбор из mysql)Redis основные понятия чтения и записи

Вставка foreach в mysql, redis также должна быть обновлена, я не могу понять, в чем разница между выбором от mysql напрямую, в то время как Redis также выбирает из mysql, чтобы обновить себя. (Я не знаю, как работает Редис, но я думаю, что это работает так)

Может ли кто-нибудь объяснить, как работает кеш Redis?

+3

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

ответ

3

Ваш код приложения должен будет обновить Redis, а также MySQL. Вы делаете это, вызывая SET для хранения новых данных с помощью строкового ключа. Затем вы получаете эти же данные с помощью команды GET.

Вы можете думать о Redis как кэш-памяти, но это настоящие преимущества в его структурах данных, которые позволяют существенно изменить кеш в реальном времени. Они хорошо работают для простых списков/наборов. Системы Webscale, которые используют Redis, часто используют Redis как свою единственную систему, которую вызовет их код приложения, ориентированный на веб-интерфейс. MySQL и другие RDMBS предназначены только для представления данных или исторического архивирования.

2

В вашем случае лучше рассмотреть Memcached, поддерживаемый Mysql db. http://dev.mysql.com/doc/refman/5.0/en/ha-memcached.html

Но обратите внимание, что Redis и Memcached полезны только для поиска/хранения ключей.

+0

поэтому memcache также кэширует данные, предположим, что он кэширует друзей пользователя и через одну минуту после этого обновление изменяет список друзей пользователя. так как memcached знает, есть ли какие-либо новые данные? memcached вернет собственный список кэшированных друзей. как он знает, есть обновление в mysql? – Pars

+0

например: для веб-сайта, такого как facebook. его база данных обновится каждые миллисекунды! поэтому memcached должен получать каждую миллисекунду, которую нужно обновить! Я не могу это получить ... – Pars

+0

Если вы хотите использовать кеш с mysql, тогда вы должны иметь «возможную согласованность» и истечение срока действия. Вы можете настроить механизм кэширования для обновления данных каждые X секунд. Другой вариант - это наоборот, чтение и запись данных в Redis, но включение журналов устойчивости .. и синхронизация с базой данных mysql каждые X секунд. – user3020494

2

Один из вариантов - это то, что называется Write Through Caching. В этом случае приложение обновляет Redis и Mysql с одинаковыми данными записи одновременно, поэтому независимо от того, откуда появляются данные (Redis/Mysql update Redis), данные всегда эквивалентны.

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