我有一个6个Redis集群实例在2个虚拟机(3个主服务器和3个从服务器)上运行。我试着每天晚上加载我所有的密钥,大约是.5十亿个密钥对10亿个密钥。web应用程序每晚执行计算并加载这些值。我的抓取速度更快,因为写入需要很长时间。更新10000个密钥需要6-10秒。对于早上登录的用户,我担心每晚的加载将不会按时完成。
下面是我的集群配置。
启用群集是
群集配置文件nodes.conf
cluster-node-timeout 5000
集群-从-有效性-因子1
日志文件redis.log
日志级别通知
慢日志-日志-慢-比10000
slowlog-max-len 64
延迟监视器阈值100
最大内存2048mb
maxmemory-policy volatile-ttl
slave-只读是
节省900 %1
节省300 10
节省60 10000
stop-writes on-bgsave-error yes rdbchecksum yes dbfilename dump.rdb
appendonly no daemonize yes
发布于 2018-09-30 04:20:37
写得很慢的原因可能与你的Redis持久化配置有关。使用当前设置,Redis将每分钟为您的数据集创建一个快照。我会尝试在没有"save Y X“配置行的测试集群上测试相同的导入,并对其进行比较。
发布于 2018-11-03 03:30:32
我使用了流水线命令,这有助于更好地提高性能。我粘贴了下面的代码,以便在一次执行中处理10000个命令。
private void saveMulti(Map<String, String> cacheableMap){ this.redisResultTemplate.executePipelined(new RedisCallback<Object>(){
@Override
public Object doInRedis(RedisConnection connection)
throws DataAccessException {
StringRedisConnection stringRedisConn =
(StringRedisConnection)connection;
for(String key: cacheableMap.keySet()){
stringRedisConn.set(key, cacheableMap.get(key));
}
return null;
}
});
}https://stackoverflow.com/questions/52528925
复制相似问题