【问题标题】:Redis writes are slowerRedis 写入速度较慢
【发布时间】:2019-03-02 21:25:25
【问题描述】:

我有 6 个 Redis 集群实例在 2 个虚拟机(3 个主设备和 3 个从属设备)中运行。我每天晚上都在尝试加载我所有的密钥,大约是 50 亿到 10 亿个密钥。 Web 应用程序每晚执行计算并加载这些值。我的获取速度更快,因为写作需要很长时间。更新 10000 个密钥需要 6 到 10 秒的时间。对于早上登录的用户,我担心夜间加载无法按时完成。

以下是我的集群配置。

支持集群

集群配置文件nodes.conf

集群节点超时 5000

cluster-slave-validity-factor 1

日志文件 redis.log

日志级别通知

slowlog-log-slower-than 10000

slowlog-max-len 64

延迟监控阈值 100

最大内存 2048mb

maxmemory-policy volatile-ttl

从属只读是

节省 900 1

节省 300 10

节省 60 10000

在 bgsave 错误时停止写入是 rdbchecksum 是 dbfilename dump.rdb

仅附加没有 守护是的

【问题讨论】:

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


    【解决方案1】:

    我使用了流水线命令,这有助于更好地提高性能。将我的代码粘贴在下面,以便在一次执行中处理 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;
          }
       });
    }
    

    【讨论】:

      【解决方案2】:

      写得很慢的原因可能和你的Redis持久化配置方式有关。使用当前设置,Redis 将每分钟创建一次数据集的快照。我会尝试在没有“保存 Y X”配置行的测试集群上测试相同的导入并进行比较。

      【讨论】:

        猜你喜欢
        • 2013-05-11
        • 1970-01-01
        • 2016-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-25
        相关资源
        最近更新 更多