Является ли метод executePipelined Spring-data-redis для redisTemplate эквивалентным команде redis-cli --pipe, используемой для массовой вставки?
Вот как я использую метод executePipelined с Spring-data-redis, и он отлично работает в блоках по 100 для в общей сложности 4 миллионов записей.
return items -> {
redisTemplate.executePipelined(new RedisCallback<Object>() {
@Override
public Object doInRedis(RedisConnection connection) throws DataAccessException {
items.forEach(item -> {
connection.set((item.getId().getBytes(), item.toJson().getBytes(), Expiration.seconds(THREE_DAYS), RedisStringCommands.SetOption.UPSERT);
});
return null;
}
});
};
Массовая вставка Redis, гдев файле написано 100 записей
cat redis-data.txt | redis-cli -c -h redisHostname -p 6379 --pipe
Может кто-нибудь сказать мне, какой из них лучше и его следует использовать?Я не вижу разницы между ними.Ниже приведены ссылки, на которые я ссылался:
https://redis.io/topics/mass-insert
https://docs.spring.io/spring-data/data-redis/docs/1.1.1.RELEASE/reference/html/redis.html