Робота з 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.