Spring Data Redis
Тема дорожной карты · Spring Boot
Spring Data Redis — это интеграция Spring Boot для Redis, предоставляющая абстракцию репозитория, операции на основе шаблонов и интеграцию Spring Cache поверх клиентских библиотек Lettuce или Jedis. Добавление spring-boot-starter-data-redis и установка spring.data.redis.host и spring.data.redis.port в application.properties достаточны для того, чтобы Spring Boot авто-настроил RedisConnectionFactory и RedisTemplate<String, Object> с сериализацией на основе Jackson. Разработчики используют @EnableRedisRepositories вместе с аннотациями домена @RedisHash для хранения и извлечения Java-объектов в виде Redis-хэшей, или полагаются на StringRedisTemplate для сырых строковых операций — счётчиков, ограничителей частоты и распределённых блокировок на базе SETNX. Spring Data Redis напрямую интегрируется с абстракцией Spring Cache через RedisCacheManager, поэтому аннотирование сервисных методов @Cacheable, @CachePut и @CacheEvict автоматически переносит дорогостоящие запросы JPA или Hibernate в Redis, резко снижая задержку при высокой нагрузке. Для реактивных Spring Boot-приложений ReactiveRedisTemplate предоставляет неблокирующий драйвер Lettuce через Mono и Flux Project Reactor, позволяя Spring Data Redis участвовать в полностью реактивных WebFlux-пайплайнах.
Как это работает
Spring Data Redis покрывает cache + NoSQL + low-level access. @Cacheable + Spring Cache abstraction (Caffeine, Redis, EhCache) меморизируют результаты методов. Spring Data Redis — кеш, sessions, pub/sub, distributed locks. Spring Data MongoDB для document storage. JdbcTemplate для raw SQL, когда JPA мешает (read-heavy queries, сложные joins). Выбирайте правильный инструмент под паттерн — JPA не молоток.
Когда применять
Кешируйте reads, не writes. Local cache — Caffeine; distributed — Redis. Не кешируйте вечно — TTL + инвалидация на writes. Mongo когда document model подходит (event stores, content) — не уходите от реляционного по дефолту. JdbcTemplate быстрый + battle-tested, когда нужен контроль.
Типичные ошибки
Ловушки Spring Data Redis: @Cacheable на методах с mutable state (stale cache); нет eviction (кеш растёт без границ); Mongo "потому что NoSQL" без подходящей document model; raw SQL со string concat (SQL injection — parameter binding).