我有一个Spring Boot应用程序需要占用数百万个键值对并将它们插入Redis .
目前我一次使用 multiSet
方法1,000个键值对 .
@Autowired
private final StringRedisTemplate template;
...
Map<String, String> keyValuePairs = new HashMap<>();
template.opsForValue().multiSet(keyValuePairs);
但是,我们还需要为每对设置一个TTL . 似乎没有办法用 multiSet
做到这一点 . 有一种方法 set
但这必须被调用数百万次,所以可能效率不高 .
// For each key value pair
template.opsForValue().set(key, value, timeout, unit);
有没有人知道这样做的方式或以高效的方式使用 set
?
谢谢
1 回答
Pipelining应该解决你的问题;您创建一个管道,用您要执行的所有命令填充它,然后将它们批量发送到redis . 使用SET与EX,您应该能够一次发送10,000或更多 .