предисловие
Оригинальный публичный номер: bigsai
Проникновение кеша, лавина кеша и разбивка кеша часто упоминаются в интервью, давайте посмотрим, что это такое сегодня, не так ли?
проникновение в кэш Redis
понимать
- сконцентрируйся
穿透
Ну то есть доступ напрямую проходит через mysql через redis, которого обычно нетkey
, запрос в базе данныхnull
. Каждый запрос попадает в базу данных и является высококонкурентным. Если база данных не выдержит, она зависнет.
решение
- Найденный нуль можно установить в качестве объекта кеша ключа.
- Конечно, это можно сделать и на логическом уровне по заведомо неверному ключу.
验证
. - В то же время вы также можете анализировать поведение пользователя, будь то преднамеренный запрос, поисковый робот или злоумышленник. Ограничить доступ пользователей.
- Другие и т. д., такие как фильтрация с помощью фильтра Блума (большой хэш-карты).
лавина кеша Redis
понимать
- лавина,
东西蜂拥而至
Значит, как лавина. Здесь это коллективный кеш Redis.大规模集体失效
, В случае высокого уровня параллелизма ключ внезапно обращается к mysql в большом масштабе, что приводит к сбою базы данных. представьте себе страну人口老年化
. В будущем люди будут концентрироваться в 70-80 лет, и никто не будет работать. Национальная рабочая сила создает давление.
решение
- Обычное решение — добавить ключ на время истечения
随机数
, чтобы ключи аннулировались равномерно. - Рассмотрите возможность использования очередей или блокировок, чтобы снизить нагрузку на выполнение программы.Конечно, это решение может повлиять на степень параллелизма.
- Данные точки доступа можно считать недействительными
разбивка кеша Redis
понимать
Сбой кеша означает, что ключ очень горячий, и он постоянно несет большой параллелизм, и большой параллелизм сосредоточен на доступе к этой точке.Когда срок действия ключа истечет, непрерывный большой параллелизм пробьет кеш и напрямую запросит базу данных. как сбой грубой силы.
- Пробой отличается от проникновения, проникновение означает идею
绕过
Redis, чтобы вызвать сбой базы данных. А поломку можно понять как正面刚
Разбивка, которая обычно представляет собой большое количество одновременных операций чтения и записи по ключу. Этот ключ запрашивает большое количество запросов к базе данных в течение периода аннулирования кэша, создавая слишком большую нагрузку на базу данных и вызывая ее сбой. Сразу比如
В сценарии seckill заказ на 100 юаней за mac за 10 000 юаней и mac за 100 юаней обязательно будет захватывать и запрашивать постоянно (конечно, у конкретного seckill свой метод обработки, вот только пример). Таким образом, сбой кеша означает, что большое количество запросов общего ключа приводит к сбою базы данных.
решение
- Мьютекс можно использовать, чтобы избежать одновременного попадания большого количества запросов в базу данных.
- Фильтр Блума, чтобы определить, находится ли контейнер в коллекции
- Вы можете установить кеш на неограниченный срок действия (подходит для некоторых случаев)
- Сделайте хорошую работу по слиянию и понижению версии, чтобы предотвратить сбой системы.
Оригинальный публичный номер: bigsai
Добро пожаловать, друзья, обратите внимание, лайкните и поддержите!