我有6个Redis集群实例在2个虚拟机(3个主服务器和3个从属服务器)中运行。我每天晚上都在尝试加载所有密钥,这大约是0.5亿个密钥到10亿个密钥。该Web应用程序每晚执行计算并加载这些值。我的提取速度更快,因为写入需要很长时间。花费6-10秒的黑白时间更新10000个按键。恐怕早上登录的用户无法按时完成夜间负载。
下面是我的集群配置。
启用集群的是
集群配置文件nodes.conf
集群节点超时5000
集群-从属有效性因子1
日志文件redis.log
日志级别通知
slowlog-log-slower-than 10000
slowlog-max-len 64
latency-monitor-threshold 100
最大内存2048mb
maxmemory-policy volatile-ttl
从属只读是
保存900 1
保存300 10
保存60 10000
停止在bgsave上写入错误是 rdbchecksum是 dbfilename dump.rdb
仅附加否 守护是
答案 0 :(得分:0)
写入速度很慢的原因可能与Redis持久性的配置方式有关。使用当前设置,Redis将每分钟创建一个数据集快照。我会尝试在没有“保存Y X”配置行的测试群集上测试相同的导入,然后进行比较。
答案 1 :(得分:0)
我使用了流水线命令,这有助于更好地改善性能。在一次执行中将我的代码粘贴到下面,以处理10000个命令。
private void saveMulti(Map cacheableMap){this.redisResultTemplate.executePipelined(new RedisCallback(){
@Override
公共对象doInRedis(RedisConnection连接)
引发DataAccessException {
StringRedisConnection stringRedisConn =
(StringRedisConnection)连接;
for(字符串键:cacheableMap.keySet()){
stringRedisConn.set(key,cacheableMap.get(key));
}
返回null;
}
});
}