在Spring RedisTemplate中使用TTL的Redis MSET

pti*_*son 5 java spring redis spring-boot

我有一个Spring Boot应用程序,该应用程序需要数百万个键值对并将它们插入Redis。

目前,我一次使用multiSet1,000个键值对的方法。

@Autowired
private final StringRedisTemplate template;

...

Map<String, String> keyValuePairs = new HashMap<>();
template.opsForValue().multiSet(keyValuePairs);
Run Code Online (Sandbox Code Playgroud)

但是,我们还需要为每对设置一个TTL。似乎没有办法用来做到这一点multiSet。有一种方法,set但这必须被调用数百万次,因此可能效率不高。

// For each key value pair
template.opsForValue().set(key, value, timeout, unit);
Run Code Online (Sandbox Code Playgroud)

有谁知道这样做或set以高性能方式使用的方式?

谢谢

Chr*_*ner 3

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

  • FWIW,这是 [Spring Data Redis Pipelined](http://docs.spring.io/spring-data/redis/docs/current/reference/html/#pipeline) 功能文档的链接 (5认同)