Ключи в Redis удаляются сразу после истечения срока действия? Подробное объяснение стратегии истечения срока действия Redis
Ключи в Redis удаляются сразу после истечения срока действия? Подробное объяснение стратегии истечения срока действия Redis

Автор: жаокк

В современной разработке программного обеспечения решающее значение имеют производительность и хранение данных. Чтобы обеспечить быстрый доступ к данным и их хранение в среде с высоким уровнем параллелизма, мы часто используем технологию кэширования. Redis (Remote Dictionary Server) как высокопроизводительная база данных хранения значений ключей широко используется в различных сценариях приложений. В процессе использования Redis мы часто сталкиваемся с истечением срока действия данных. Итак, когда срок действия ключа в Redis истечет, он будет немедленно удален? В этой статье мы углубимся в стратегию истечения срока действия Redis и поможем вам понять механизм, лежащий в ее основе.

Какова политика истечения срока действия Redis?

Политика истечения срока действия Redis — это механизм автоматического удаления данных с истекшим сроком действия. При использовании Redis для хранения данных мы можем установить срок действия (TTL, Time To Live) для каждого ключа. Как только время истечения срока действия установлено, Redis автоматически удалит ключ по истечении срока его действия, чтобы освободить место в памяти. Однако следует отметить, что Redis не гарантирует, что Ключ будет удален сразу после истечения срока его действия. Фактически, Redis использует стратегию ленивого удаления для управления данными с истекшим сроком действия.

Ленивое удаление и обычное удаление

RedisСтратегия экспирации в основном включает в себя два метода:Ленивое истечение срока действияи Периодическое удаление (активный срок действия)。

Ленивое истечение срока действия

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

Периодическое удаление (активный срок действия)

Помимо отложенного удаления, Redis также очищает просроченные данные посредством регулярного удаления. Redis будет случайным образом выбирать часть данных с истекшим сроком действия каждый период времени (по умолчанию — 100 мс), а затем удалять данные с истекшим сроком действия. Таким образом, даже если к некоторым ключам нет доступа, их можно очистить при обычном удалении.

Пример демонстрации: обработка просроченных данных

Чтобы лучше понять стратегию истечения срока действия Redis, давайте продемонстрируем ее на простом примере.

Язык кода:python
кодКоличество запусков:0
копировать
import redis
import time

# Подключиться к серверу Redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)

# Установите срок действия ключа на 5 секунд.
r.set('my_key', 'Hello, Redis!', ex=5)

# Получить значение ключа
value = r.get('my_key')
print(f"Значение ключа: {value}")

# Подождите 6 секунд, пока срок действия ключа истечет.
time.sleep(6)

# Попробуйте еще раз значение ключа
value_after_expiry = r.get('my_key')
print(f"Попробуйте Tweet после истечения срока действия значение ключа:{value_after_expiry}")

В приведенном выше примере,Сначала мы подключили сервер Redis,Затем установите срок действия ключа на 5 секунд. После ожидания 6 секунд,Мы пытаемся получить значение этого ключа еще раз. ты найдешь,Хотя мы пытались получить значение ключа после истечения срока действия,Но на самом деле возвращаетсяNone,Это означает, что этот Ключ был удален.

Подвести итог

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


boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.