Использование Spring Cloud Connector для Heroku для подключения к нескольким базам данных RedisLabs

У меня есть требование для нескольких баз данных RedisLabs для моего приложения, как описано на их домашней странице:

несколько выделенных баз данных в плане

Мы включаем несколько БД в одном плане, каждый из которых работает в выделенном процессе и неблокирующим образом.

Я полагаюсь на Spring Cloud Connectors для подключения к Heroku (или Foreman в локальной сети), и кажется, что класс RedisServiceInfoCreator допускает один URL RedisLabs, т.е. REDISCLOUD_URL

Вот как я настроил мою первую фабрику соединений redis:

@Configuration
@Profile({Profiles.CLOUD, Profiles.DEFAULT})
public class RedisCloudConfiguration extends AbstractCloudConfig  {

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        PoolConfig poolConfig = ...
        return connectionFactory().redisConnectionFactory("REDISCLOUD", new PooledServiceConnectorConfig(poolConfig));
    }
...

Как мне настроить вторую фабрику соединений, если я собираюсь использовать несколько баз данных redis labs?

2 ответа

Решение

Redis Cloud установит для вас env var только для первого ресурса в каждом создаваемом дополнении.

Если вы создаете несколько ресурсов в дополнении, вы должны либо сами установить env var, либо использовать новую конечную точку непосредственно в своем коде.

Короче говоря, ответ да, RedisConnectionFactory должен использовать Jedis для подключения к вашей базе данных Redis. он использует пул jedis, который может работать только с одной конечной точкой redis. в этом отношении нет никаких различий между RedisLabs и базовым Redis.

вам нужно создать несколько пулов соединений для работы с несколькими redis dbs / endpoints.

просто для расширения, если вы используете несколько БД для масштабирования, с RedisLabs нет необходимости, поскольку они поддерживают кластеризацию с одной конечной точкой. так что вы можете просто создать один БД с таким количеством памяти, сколько необходимо, RedisLabs создаст для вас кластер и автоматически масштабирует ваш Redis.

если вашему приложению требуется логическое разделение, то создание нескольких баз данных - правильный путь.

Другие вопросы по тегам