Работа с NoSQL-технологиями

Spring Data предусматривает дополнительные проекты, которые помогут получить доступ к различным NoSQL-технологиям, включая:

  • MongoDB

  • Neo4J

  • Elasticsearch

  • Redis

  • GemFire или Geode

  • Cassandra

  • >Couchbase

  • LDAP

Spring Boot предусматривает автоконфигурацию для Redis, MongoDB, Neo4j, Solr, Elasticsearch, Cassandra, Couchbase, LDAP и InfluxDB. Кроме того, Spring Boot для Apache Geode предусматривает автоконфигурацию для Apache Geode. Можно использовать другие проекты, но конфигурировать их придется самостоятельно.

Redis

Redis – это кэш, брокер сообщений и полнофункциональное хранилище данных типа "ключ-значение". Вдобавок к этому Spring Boot содержит базовую автоконфигурацию для клиентских библиотек Lettuce и Jedis и абстракции, предоставляемые через Spring Data Redis.

Для удобного сбора зависимостей существует "стартер" spring-boot-starter-data-redis. По умолчанию он использует библиотеку Lettuce. Этот стартовый пакет работает как с традиционными, так и с реактивными приложениями.

Мы также предусмотрели "стартер" spring-boot-starter-data-redis-reactive для обеспечения согласованности с другими хранилищами, поддерживающими реактивное программирование.

Подключение к Redis

Можно внедрить автоконфигурируемые RedisConnectionFactory, StringRedisTemplate или ванильный экземпляр RedisTemplate, как и любой другой бин Spring. По умолчанию экземпляр будет пытаться подключиться к серверу Redis по адресу localhost:6379. В следующем листинге приведен пример такого бина:

Java
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
    private final StringRedisTemplate template;
    public MyBean(StringRedisTemplate template) {
        this.template = template;
    }
    // ...
    public Boolean someMethod() {
        return this.template.hasKey("spring");
    }
}
Kotlin
import org.springframework.data.redis.core.StringRedisTemplate
import org.springframework.stereotype.Component
@Component
class MyBean(private val template: StringRedisTemplate) {
    // ...
    fun someMethod(): Boolean {
        return template.hasKey("spring")
    }
}
Регистрировать можно произвольное количество бинов, реализующих LettuceClientConfigurationBuilderCustomizer для более углублённой настройки. ClientResources можно также настраивать с помощью ClientResourcesBuilderCustomizer. Если вы используете Jedis, также доступен JedisClientConfigurationBuilderCustomizer. Кроме того, вы можете зарегистрировать бин типа RedisStandaloneConfiguration, RedisSentinelConfiguration или RedisClusterConfiguration, чтобы получить полный контроль над конфигурацией.

Если вы добавите собственный @Bean любого из автоконфигурируемых типов, он заменит собой тип по умолчанию (кроме случая с RedisTemplate, если исключение основывается на имени бина, redisTemplate, а не на его типе).

По умолчанию фабрика соединений в пуле автоматически конфигурируется, если commons-pool2 находится в classpath.