我们计划在我们的应用程序中使用Redis缓存,我们的要求是在实际应用程序启动之前,我们首先需要将一些6个月的数据加载到Redis缓存中,我在想,如果我们在循环中一次执行一个命令,比如将键值插入到Redis中,这将花费太多的时间,他们的方法是我们可以从数据库中检索数据,并一次性将所有数据插入到Redis中吗?
有谁能提个建议吗?
发布于 2017-11-10 23:03:56
Redis提供了对pipelining的支持,这涉及到在不等待回复的情况下向服务器发送多个命令,然后在单个步骤中读取回复。当您需要连续发送多个命令时,管道可以提高性能,例如将许多元素添加到同一列表中。
Spring Data Redis提供了几种用于在管道中执行命令的RedisTemplate方法。
举个例子:
//pop a specified number of items from a queue
List<Object> results = stringRedisTemplate.executePipelined(
new RedisCallback<Object>() {
public Object doInRedis(RedisConnection connection) throws DataAccessException {
StringRedisConnection stringRedisConn = (StringRedisConnection)connection;
for(int i=0; i< batchSize; i++) {
stringRedisConn.rPop("myqueue");
}
return null;
}
});您可以使用此link
或者,您也可以使用Redis Mass insertion工具。
https://stackoverflow.com/questions/47220343
复制相似问题