Мы используем Spring Cloud Gateway для аутентификации OAuth2, после чего он сохраняет информацию о сеансе пользователей в Redis с настройками по умолчанию, установленными @EnableRedisWebSession
и
@Bean
fun redisConnectionFactory(): LettuceConnectionFactory {
return LettuceConnectionFactory("redis-cache", 6379);
}
@Bean
fun authorizedClientRepository(): ServerOAuth2AuthorizedClientRepository {
return WebSessionServerOAuth2AuthorizedClientRepository()
}
application.yml
настройки кеша:
spring:
session:
store-type: redis
redis:
save-mode: on_set_attribute
flush-mode: on_save
Он отлично работает, хотя я вижу, что он делает запросы к Redis по каждому запросу пользователя, как будто у него вообще нет кеша в памяти. Есть ли возможность изменить это поведение (т.е. делать запросы через сеть к Redis, только если текущий сеанс пользователя не найден в кеше локальной памяти)? Может быть, я могу переопределить некоторые классы или нет другого способа сделать это, кроме как переписать всю логику кеширования? Извините за довольно широкий вопрос, но я не нашел никакой информации по этой теме в документации. Или, может быть, вы могли бы указать мне на классы в исходном коде Spring Session, где реализована эта логика, чтобы я мог выяснить, какие у меня варианты.
Я использую spring-cloud-starter-gateway 2.2.5.RELEASE, spring-session-core 2.3.1.RELEASE, spring-boot-starter-data-redis-reactive и spring-session-data-redis.