Интервьюер: Что такое проникновение в кеш, лавина кеша и сбой кеша?

Redis задняя часть

предисловие

Оригинальный публичный номер: bigsai

Проникновение кеша, лавина кеша и разбивка кеша часто упоминаются в интервью, давайте посмотрим, что это такое сегодня, не так ли?

在这里插入图片描述 在这里插入图片描述

проникновение в кэш Redis

在这里插入图片描述 понимать

  • сконцентрируйся穿透Ну то есть доступ напрямую проходит через mysql через redis, которого обычно нетkey, запрос в базе данныхnull. Каждый запрос попадает в базу данных и является высококонкурентным. Если база данных не выдержит, она зависнет.

решение

  • Найденный нуль можно установить в качестве объекта кеша ключа.
  • Конечно, это можно сделать и на логическом уровне по заведомо неверному ключу.验证.
  • В то же время вы также можете анализировать поведение пользователя, будь то преднамеренный запрос, поисковый робот или злоумышленник. Ограничить доступ пользователей.
  • Другие и т. д., такие как фильтрация с помощью фильтра Блума (большой хэш-карты).

лавина кеша Redis

понимать

  • лавина,东西蜂拥而至Значит, как лавина. Здесь это коллективный кеш Redis.大规模集体失效, В случае высокого уровня параллелизма ключ внезапно обращается к mysql в большом масштабе, что приводит к сбою базы данных. представьте себе страну人口老年化. В будущем люди будут концентрироваться в 70-80 лет, и никто не будет работать. Национальная рабочая сила создает давление.在这里插入图片描述

решение

  • Обычное решение — добавить ключ на время истечения随机数, чтобы ключи аннулировались равномерно.
  • Рассмотрите возможность использования очередей или блокировок, чтобы снизить нагрузку на выполнение программы.Конечно, это решение может повлиять на степень параллелизма.
  • Данные точки доступа можно считать недействительными

разбивка кеша Redis

понимать

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

在这里插入图片描述

  • Пробой отличается от проникновения, проникновение означает идею绕过Redis, чтобы вызвать сбой базы данных. А поломку можно понять как正面刚Разбивка, которая обычно представляет собой большое количество одновременных операций чтения и записи по ключу. Этот ключ запрашивает большое количество запросов к базе данных в течение периода аннулирования кэша, создавая слишком большую нагрузку на базу данных и вызывая ее сбой. Сразу比如В сценарии seckill заказ на 100 юаней за mac за 10 000 юаней и mac за 100 юаней обязательно будет захватывать и запрашивать постоянно (конечно, у конкретного seckill свой метод обработки, вот только пример). Таким образом, сбой кеша означает, что большое количество запросов общего ключа приводит к сбою базы данных.

решение

  • Мьютекс можно использовать, чтобы избежать одновременного попадания большого количества запросов в базу данных.
  • Фильтр Блума, чтобы определить, находится ли контейнер в коллекции
  • Вы можете установить кеш на неограниченный срок действия (подходит для некоторых случаев)
  • Сделайте хорошую работу по слиянию и понижению версии, чтобы предотвратить сбой системы.

Оригинальный публичный номер: bigsai

Добро пожаловать, друзья, обратите внимание, лайкните и поддержите!