我有一个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
?
由于
答案 0 :(得分:1)
Pipelining可以解决您的问题;您创建一个管道,用您要执行的所有命令填充它,然后将它们批量发送到redis。使用SET和EX,您应该能够一次发送10,000或更多。