Redis MSET在Spring RedisTemplate中使用TTL

时间:2016-08-18 21:25:24

标签: java spring spring-boot redis

我有一个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 个答案:

答案 0 :(得分:1)

Pipelining可以解决您的问题;您创建一个管道,用您要执行的所有命令填充它,然后将它们批量发送到redis。使用SET和EX,您应该能够一次发送10,000或更多。