Redis的写入速度较慢

时间:2018-09-27 03:18:45

标签: caching redis spring-data spring-data-redis

我有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

仅附加否 守护是

2 个答案:

答案 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;       }    }); }