
- Главная
- Каталог
- Интернет технологии
- Backend Portal | Программирование
Backend Portal | Программирование
Присоединяйтесь к нашему каналу и погрузитесь в мир Backend-разработки Связь:
Статистика канала
enable_seqscan=off
- вручную обновлять статистику
- или использовать расширения вроде pg_hint_plan, чтобы подсказать планировщику более подходящий вариант выполнения
redis.setex("user:123", 300, user_data) # истекает через 5 минут{}
Плюсы: автоматическая очистка и очень простая реализация.
Минусы: данные могут оставаться устаревшими вплоть до полного TTL.
Подходит для данных, которые редко меняются.
4/ Стратегия 2: Write-Through Cache
Обновляете базу и кэш одновременно.
def update_user(id, data):
db.update(id, data)
redis.set("user:" + id, data){}
Плюсы: кэш всегда актуален, нет stale reads.
Минусы: запись становится медленнее (работаете с двумя системами), сбои кэша усложняют логику.
Используется там, где данные должны быть строго актуальными.
5/ Стратегия 3: Write-Aside (самая распространённая)
Сначала обновляете базу, затем просто удаляете запись из кэша.
def update_user(id, data):
db.update(id, data)
redis.delete("user:" + id){}
Следующее чтение автоматически подтянет свежие данные и заново заполнит кэш.
Плюсы: просто и хорошо работает при частичных обновлениях.
Минусы: первое чтение после обновления чуть медленнее (cache miss).
Подходит для большинства приложений.
6/ Реальный пример из продакшена
E-commerce сайт кэширует цены товаров.
Администратор обновляет цену.
Пользователи всё ещё видят старую цену на checkout.
Решение: при обновлении цены инвалидировать кэш товара и все связанные кэши (списки, категории).
Следующий запрос пользователя сразу получает корректную цену.
Никаких недовольных клиентов и ошибочных заказов.
7/ Проблема Thundering Herd
Популярный cache key истёк.
Одновременно приходит 1000 запросов.
Все видят cache miss и начинают бомбить базу.
База ложится под нагрузкой.
Решение: использовать краткоживущую блокировку (lock), чтобы только один запрос пересобирал кэш, а остальные немного подождали.
Один запрос к базе вместо тысячи.
8/ Самый популярный паттерн: Cache-Aside с lazy loading
def get_user(id):
cached = redis.get("user:" + id)
if cached:
return json.loads(cached)
user = db.query("SELECT * FROM users WHERE id = %s", id)
redis.setex("user:" + id, 300, json.dumps(user))
return user{}
При обновлении просто удаляете ключ.
Чисто, масштабируемо и повсеместно используется в продакшене.
9/ Многоуровневая инвалидация кэша
В реальных системах часто несколько уровней кэша:
- Redis (общий кэш)
- In-memory кэш на каждом сервере
- CDN на edge
При изменении данных нужно инвалидировать каждый слой.
Иначе где-то всё равно будут показываться устаревшие данные.
Решение: рассылка событий инвалидации или явная очистка каждого уровня.
10/ Типичные ошибки, которые бьют по командам
Никогда ничего не инвалидировать (вечный stale)
Инвалидировать слишком агрессивно (кэш теряет смысл)
Забывать про связанные кэши (списки, агрегации)
Отсутствие защиты от cache stampede
Кэширование сырых запросов к БД вместо финальных результатов
Вместо этого: комбинируйте TTL с инвалидацией, чистите связанные данные, защищайтесь от stampede и мониторьте cache hit rate.
Отзывы канала
всего 2 отзыва
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Backend Portal | Программирование — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 16.8K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 9.5, количество отзывов – 2, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 4195.8 ₽, а за 12 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий