我们计划在我们的应用程序中使用Redis缓存,我们的要求首先是我们需要在实际应用程序启动之前将一些6个月的数据加载到Redis缓存中,我想如果我们在循环中一次执行一个命令就像将键值插入Redis,需要花费太多时间,我们可以从数据库中检索数据并将所有数据一次性插入Redis中吗?
任何人都可以建议吗?
答案 0 :(得分:0)
Redis为pipelining提供支持,其中包括向服务器发送多个命令而无需等待回复,然后在一个步骤中读取回复。当您需要连续发送多个命令时,流水线操作可以提高性能,例如向同一个List添加许多元素。
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设施。