Используя redis , существует ряд команд для извлечения целых структур данных ( LRANGE для списков, SMEMBERS для наборов, ZRANGE для отсортированных наборов и HGETALL для хэшей).
Только у хэша есть метод ( HMSET ) для вставки нескольких элементов одной командой.
Во всех примерах, которые я видел, было добавлено по одному элементу за раз в список (через RPUSH или LPUSH ) или набор (через )SADD / ZADD ).
Более конкретная проблема, которую я хочу решить, состоит в создании списков и отсортированных наборов, содержащих идентификаторы базы данных, эти списки уникальны для каждого пользователя и содержатот нескольких сотен до нескольких тысяч идентификаторов.
Они обычно собираются из запроса к базе данных, немного массируются в памяти и затем сохраняются в redis для разбивки на страницы (списки) или выполнения операций на основе набора для извлечения подмножеств(наборы и отсортированные наборы).
В настоящее времяЯ перебираю список и вызываю соответствующий метод add для каждого элемента.У этого есть недостатки, состоящие в том, чтобы делать многократные запросы по проводам и повторять ключ каждый раз.
redis> RPUSH employee:ids 1000
(integer) 1
redis> RPUSH employee:ids 1001
(integer) 2
redis> RPUSH employee:ids 1002
(integer) 3
redis> RPUSH employee:ids 1003
(integer) 4
redis> del employee:ids
(integer) 1
Я думаю, что используя транзакцию с MULTI и EXEC может помочь превратить его в один запрос, но это не поможет с повторным нажатием клавиши.
redis> MULTI
OK
redis> RPUSH employee:ids 1000
QUEUED
redis> RPUSH employee:ids 1001
QUEUED
redis> RPUSH employee:ids 1002
QUEUED
redis> RPUSH employee:ids 1003
QUEUED
redis> RPUSH employee:ids 1004
QUEUED
redis> EXEC
1. (integer) 1
2. (integer) 2
3. (integer) 3
4. (integer) 4
5. (integer) 5
Есть ли что-то, чего мне не хватает, что позволило бы мне добавлять элементы в списки / наборы одной командой или без повторения ключа каждый раз?
Я тожеиспользуя клиентскую библиотеку jedis, если это имеет значение (или если есть другая библиотека, которую я могу использовать из JVM, которая будет лучше).