Redis fetch требует времени, используя Redisson - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть сценарий, в котором приложение должно получать операцию от redis примерно 80 раз за запрос. Когда я нажимаю 1 запрос на это приложение, оно дает ответ менее чем за 1 секунду, но при увеличении размера запроса до 100 redissonClient начинает работать медленно и для извлечения 250 записей требуется около 13 секунд.

Я новичок в Redis и не уверен, по умолчанию ли это. Хотя в одной из статей я обнаружил, что redis может обрабатывать миллионы операций за 1 секунду на 1 узле. Наш сервер Redis в настоящее время работает на 1 узле.

Ниже приведена конфигурация redis:

{
"singleServerConfig": {
    "idleConnectionTimeout": 10000,
    "pingTimeout": 1000,
    "connectTimeout": 10000,
    "timeout": 2000,
    "retryAttempts": 3,
    "retryInterval": 1500,
    "reconnectionTimeout": 2000,
    "failedAttempts": 3,
    "password": null,
    "subscriptionsPerConnection": 5,
    "clientName": null,
    "address": "redis://172.18.17.207:6379",
    "subscriptionConnectionMinimumIdleSize": 1,
    "subscriptionConnectionPoolSize": 50,
    "connectionMinimumIdleSize": 32,
    "connectionPoolSize": 100,
    "database": 0,
    "dnsMonitoringInterval": 5000
},
"threads": 128,
"nettyThreads": 128,
"codec": null,
"useLinuxNativeEpoll": false
}

А ниже показано, как я создаю экземпляр клиента redisson во время запуска:

try {
        Config config = Config.fromJSON(CommonConstants.REDIS_SINGLE_CONFIG_JSON_FILE);
        redisClient = Redisson.create(config);
    } catch (IOException e) {
        log.error(null, "Error establishing connection to Redis Cluster!", e);
    }

А ниже я получаю записи:

public List<Map<String, String>> fetch(List<String> ids) {
    return ids.stream().map(id -> {
        Map<String, String> m = redisClient.getMapCache(id);
        return m;
    }).collect(Collectors.toList());
}

Я подозреваю, что неправильно настроил клиент Redis, но не смог понять, что это такое.

Любая помощь / свет очень ценится.

Спасибо

1 Ответ

0 голосов
/ 24 декабря 2018

Stream использует итератор, предоставленный объектом RMapCache.По умолчанию он выбирает только 10 элементов, я рекомендую вам использовать метод RMapCache.readAllMap.

...