【发布时间】:2018-04-23 12:55:57
【问题描述】:
我们计划在我们的应用程序中使用 Redis 缓存,我们的要求是首先我们需要在实际应用程序启动之前将一些 6 个月的数据加载到 Redis 缓存中,我想如果我们在循环中一次执行一个命令就像将键值插入Redis,太费时间了,他们的方法是我们可以从数据库中检索数据并一次性将所有数据插入Redis吗?
谁能推荐一下?
【问题讨论】:
标签: spring caching spring-boot redis
我们计划在我们的应用程序中使用 Redis 缓存,我们的要求是首先我们需要在实际应用程序启动之前将一些 6 个月的数据加载到 Redis 缓存中,我想如果我们在循环中一次执行一个命令就像将键值插入Redis,太费时间了,他们的方法是我们可以从数据库中检索数据并一次性将所有数据插入Redis吗?
谁能推荐一下?
【问题讨论】:
标签: spring caching spring-boot redis
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 设施。
【讨论】: