当前位置: 代码迷 >> 综合 >> Spring boot 2.0 连接 Redis 集群之 Sentinel 和 Cluster 集群模式
  详细解决方案

Spring boot 2.0 连接 Redis 集群之 Sentinel 和 Cluster 集群模式

热度:85   发布时间:2023-10-10 05:27:27.0

关于 Redis 集群的搭建可以参考我的另一篇博客:
Redis 集群模式详解 - 主从(master-slave)、哨兵(sentinel)、集群(cluster)

 

Spring Boot 2.0 整合 Redis

下面开始 Spring Boot 2.0 整合 Redis,Spring boot 中整合 Redis 非常简单,在 pom.xml中添加依赖:

   <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

Spring boot 2.0 的 spring-boot-starter-data-redis 中,默认使用的是 Lettuce 作为 Redis 客户端,它与 Jedis 的主要区别如下:

  • Jedis 是同步的,不支持异步,Jedis 客户端实例不是线程安全的,需要每个线程一个 Jedis 实例,所以一般通过连接池来使用 Jedis
  • Lettuce 是基于 Netty 框架的事件驱动的 Redis 客户端,其方法调用是异步的,Lettuce 的 API 也是线程安全的,所以多个线程可以操作单个 Lettuce 连接来完成各种操作,同时 Lettuce 也支持连接池

如果不使用默认的 Lettuce,使用 Jedis 的话,可以排除 Lettuce 的依赖,手动加入 Jedis 依赖,如下:

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><exclusion><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.4.1</version></dependency>

在配置文件 application.yml 中添加配置(针对单实例)

spring:redis:host: 192.168.1.30port: 6379password: 123456database: 1 # 数据库索引,默认0timeout: 6000 # 连接超时,单位msjedis:  # 或lettuce, 连接池配置,springboot 2.0 中使用 jedis 或者 lettuce 配置连接池,默认为 lettuce 连接池pool:max-active: 8 # 连接池最大连接数(使用负值表示没有限制)max-wait: -1 # 连接池分配连接最大阻塞等待时间(阻塞时间到,抛出异常。使用负值表示无限期阻塞)max-idle: 8 # 连接池中的最大空闲连接数min-idle: 0 # 连接池中的最小空闲连接数

添加配置类 RedisConfig,其中 @EnableCaching 注解是为了使 @Cacheable、@CacheEvict、@CachePut、@Caching 注解生效

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration
@EnableCaching
public class RedisConfig {
    /*** redis重写RedisTemplate.*/@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
    RedisTemplate<String, Object> redisTemplate = new RedisTemplate();redisTemplate.setConnectionFactory(redisConnectionFactory);Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);ObjectMapper om = new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);//序列化时允许非常量字段均输出类型,即redis序列化后带有类型om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);RedisSerializer<String> stringSerializer = new StringRedisSerializer();// key 采用 String 的序列化方式redisTemplate.setKeySerializer(stringSerializer);// hash 的 key 也采用 String 的序列化方式redisTemplate.setHashKeySerializer(stringSerializer);// value 序列化方式采用 jacksonredisTemplate.setValueSerializer(jackson2JsonRedisSerializer);// hash 的 value 序列化方式采用 jacksonredisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);redisTemplate.afterPropertiesSet();return redisTemplate;}
}

上述配置类注入了自定义的 RedisTemplate<String, Object>, 替换 RedisAutoConfiguration 中自动配置的 RedisTemplate<Object, Object> 类(RedisAutoConfiguration 另外还自动配置了 StringRedisTemplate)。

此时,我们可以通过定义一个基于 RedisTemplate 的工具类,或通过在 Service 层添加 @Cacheable、@CacheEvict、@CachePut、@Caching 注解来使用缓存。比如定义一个 RedisService 类,封装常用的 Redis 操作方法:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;import java.util.Objects;
import java.util.Properties;
import java.util.concurrent.TimeUnit;@Component
public class RedisService {
    private static final Logger LOGGER = LoggerFactory.getLogger(RedisService.class);private RedisTemplate<String, Object> redisTemplate;private StringRedisTemplate stringRedisTemplate;public RedisService(RedisTemplate<String, Object> redisTemplate,StringRedisTemplate stringRedisTemplate) {
    this.redisTemplate = redisTemplate;this.stringRedisTemplate = stringRedisTemplate;}/*** 普通缓存放入** @param key 键* @param value 值* @return*/public void set(String key, Object value) {
    try {
    redisTemplate.opsForValue().set(key, value);} catch (Exception e) {
    LOGGER.error("exception when set key {}. ", key, e);}}/*** 普通缓存放入并设置时间** @param key 键* @param value 值* @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期* @return*/public void set(String key, Object value, long time) {
    try {
    if (time > 0) {
    redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);} else {
    this.set(key, value);}} catch (Exception e) {
    LOGGER.error("exception when set key {}. ", key, e);}}/*** 指定缓存失效时间** @param key 键* @param time 时间(秒)* @return*/public void expire(String key, long time) {
    try {
    if (time > 0) {
    redisTemplate.expire(key, time, TimeUnit.SECONDS);}} catch (Exception e) {
    LOGGER.error("exception when expire key {}. ", key, e);}}/*** 根据key获取过期时间** @param key 键 不能为null* @return 时间(秒) 返回0代表为永久有效*/public long getExpire(String key) {
    return redisTemplate.getExpire(key, TimeUnit.SECONDS);}/*** 判断key是否存在** @param key 键* @return true 存在 false不存在*/public boolean hasKey(String key) {
    try {
    return redisTemplate.hasKey(key);} catch (Exception e) {
    LOGGER.error("exception when check key {}. ", key, e);return false;}}/*** 删除缓存** @param key 可以传一个值 或多个*/@SuppressWarnings("unchecked")public void del(String... key) {
    if (Objects.nonNull(key) && key.length > 0) {
    if (key.length == 1) {
    redisTemplate.delete(key[0]);} else {
    redisTemplate.delete(CollectionUtils.arrayToList(key));}}}/*** 普通缓存获取** @param key 键* @return 值*/public Object get(String key) {
    return Objects.isNull(key) ? null : redisTemplate.opsForValue().get(key);}/*** 递增** @param key 键* @param delta 要增加几(大于0)* @return*/public long incr(String key, long delta) {
    if (delta <= 0) {
    throw new RuntimeException("递增因子必须大于0");}return redisTemplate.opsForValue().increment(key, delta);}/*** 递减** @param key 键* @param delta 要减少几(小于0)* @return*/public long decr(String key, long delta) {
    if (delta <= 0) {
    throw new RuntimeException("递减因子必须大于0");}return redisTemplate.opsForValue().increment(key, -delta);}/*** 获取 Redis 服务器信息** @param type 要获取的属性类型* @return 属性信息*/public Properties getRedisInfo(String type) {
    return Objects.isNull(type) ? stringRedisTemplate.getRequiredConnectionFactory().getConnection().info(): stringRedisTemplate.getRequiredConnectionFactory().getConnection().info(type);}
}

在 ServiceImpl 下使用参考如下:

@Service
@CacheConfig(cacheNames = "users")
public class UserService {
    private static Map<String, User> userMap = new HashMap<>();@CachePut(key = "#user.username")public User addUser(User user){
    user.setUid(UUID.randomUUID().toString());System.out.println("add user: " + user);userMap.put(user.getUsername(), user);return user;}@Caching(put = {
    @CachePut( key = "#user.username"),@CachePut( key = "#user.uid")})public User addUser2(User user) {
    user.setUid(UUID.randomUUID().toString());System.out.println("add user2: " + user);userMap.put(user.getUsername(), user);return user;}...
}

 

Spring Boot 2.0 整合 Redis Sentinel(哨兵)模式

Spring Boot 2.0 整合 Redis 哨兵模式除了配置稍有差异,其它与整合单实例模式类似,配置参考如下:

spring:redis:sentinel:master: mymasternodes: 192.168.1.29:26379,192.168.1.30:26379,192.168.1.31:26379 # 哨兵的 IP:Port 列表password: 123456database: 1 # 数据库索引,默认0timeout: 6000 # 连接超时,单位msjedis: # 或lettuce, 连接池配置,springboot 2.0 中使用 jedis 或者 lettuce 配置连接池,默认为 lettuce 连接池pool:max-active: 8 # 连接池最大连接数(使用负值表示没有限制)max-wait: -1 # 连接池分配连接最大阻塞等待时间(阻塞时间到,抛出异常。使用负值表示无限期阻塞)max-idle: 8 # 连接池中的最大空闲连接数min-idle: 0 # 连接池中的最小空闲连接数

 

Spring Boot 2.0 整合 Redis Cluster 模式

Spring Boot 2.0 整合 Redis 哨兵模式除了配置稍有差异,其它与整合单实例模式也类似,配置参考如下:

spring:redis:cluster:nodes: 192.168.1.29:7001, 192.168.1.29:7002, 192.168.1.30:7003, 192.168.1.30:7004, 192.168.1.31:7005, 192.168.1.31:7006password: 123456database: 1 # 数据库索引,默认0timeout: 6000 # 连接超时,单位msjedis: # 或lettuce, 连接池配置,springboot 2.0 中使用 jedis 或者 lettuce 配置连接池,默认为 lettuce 连接池pool:max-active: 8 # 连接池最大连接数(使用负值表示没有限制)max-wait: -1 # 连接池分配连接最大阻塞等待时间(阻塞时间到,抛出异常。使用负值表示无限期阻塞)max-idle: 8 # 连接池中的最大空闲连接数min-idle: 0 # 连接池中的最小空闲连接数

 

Unit 测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class JedisPoolTest {
    private static final Logger LOGGER = LoggerFactory.getLogger(JedisPoolTest.class);@Autowiredprivate RedisService redisService;@Testpublic void redisTest() {
    redisService.set("k111", "v111.sanchar");String v1 = Objects.isNull(redisService.get("k111")) ? "" : redisService.get("k111").toString();LOGGER.info("value: {}", v1);boolean isKeyExist = redisService.hasKey("k111");LOGGER.info("key exist: {}", isKeyExist);redisService.del("k111");String v2 = Objects.isNull(redisService.get("k111")) ? "" : redisService.get("k111").toString();LOGGER.info("value: {}", v2);Properties replication = redisService.getRedisInfo("replication");LOGGER.info("replication info: {}", replication);Properties redisInfo = redisService.getRedisInfo(null);LOGGER.info("redis Info: {}", redisInfo);}
}

日志输出如下:

2021-01-16 20:47:03.998  INFO 95185 --- [           main] per.sanchar.san.JedisPoolTest            : value: v111.sanchar
2021-01-16 20:47:04.004  INFO 95185 --- [           main] per.sanchar.san.JedisPoolTest            : key exist: true
2021-01-16 20:47:04.011  INFO 95185 --- [           main] per.sanchar.san.JedisPoolTest            : value: 
2021-01-16 20:47:04.080  INFO 95185 --- [           main] per.sanchar.san.JedisPoolTest            : replication info: {
    192.168.1.30:7004.repl_backlog_active=1, 192.168.1.30:7004.master_replid=d262cb91b8b147ce5a15de0b711ca9fdc5754595, 192.168.1.30:7007.repl_backlog_histlen=37380, 192.168.1.30:7007.repl_backlog_size=1048576, 192.168.1.30:7007.master_repl_offset=37380, 192.168.1.31:7005.role=master, 192.168.1.31:7005.repl_backlog_histlen=40325, 192.168.1.30:7004.role=master, 192.168.1.31:7005.repl_backlog_size=1048576, 192.168.1.30:7007.second_repl_offset=-1, 192.168.1.31:7005.master_replid2=0000000000000000000000000000000000000000, 192.168.1.30:7004.repl_backlog_first_byte_offset=1, 192.168.1.31:7005.repl_backlog_active=1, 192.168.1.30:7004.connected_slaves=1, 192.168.1.30:7004.repl_backlog_size=1048576, 192.168.1.30:7003.master_replid=a236cf435d35555d623eda1057bb4be335594aca, 192.168.1.30:7004.master_repl_offset=40067, 192.168.1.30:7003.repl_backlog_active=1, 192.168.1.31:7005.master_replid=077aefe0e9768f38fd0dd79fb416c5cd98379a4c, 192.168.1.31:7005.slave0=ip=192.168.1.29,port=7002,state=online,offset=40325,lag=1, 192.168.1.30:7003.repl_backlog_first_byte_offset=1, 192.168.1.30:7004.second_repl_offset=4635, 192.168.1.31:7005.repl_backlog_first_byte_offset=1, 192.168.1.30:7003.master_repl_offset=40517, 192.168.1.30:7007.repl_backlog_first_byte_offset=1, 192.168.1.30:7007.master_replid2=0000000000000000000000000000000000000000, 192.168.1.30:7003.role=master, 192.168.1.30:7003.slave0=ip=192.168.1.31,port=7006,state=online,offset=40450,lag=0, 192.168.1.30:7007.connected_slaves=1, 192.168.1.30:7003.second_repl_offset=-1, 192.168.1.30:7007.role=master, 192.168.1.30:7007.repl_backlog_active=1, 192.168.1.30:7004.slave0=ip=192.168.1.29,port=7001,state=online,offset=40067,lag=0, 192.168.1.30:7003.repl_backlog_histlen=40517, 192.168.1.30:7004.master_replid2=a37355021b5b210a37bdf73177dd6f96030311f9, 192.168.1.30:7003.repl_backlog_size=1048576, 192.168.1.31:7005.connected_slaves=1, 192.168.1.30:7003.master_replid2=0000000000000000000000000000000000000000, 192.168.1.31:7005.master_repl_offset=40325, 192.168.1.30:7004.repl_backlog_histlen=40067, 192.168.1.30:7007.master_replid=bb66da8f8af5b72a46ee7aed3a6a5b6b41f4167e, 192.168.1.30:7003.connected_slaves=1, 192.168.1.31:7005.second_repl_offset=-1, 192.168.1.30:7007.slave0=ip=192.168.1.31,port=7008,state=online,offset=37380,lag=0}
2021-01-16 20:47:04.114  INFO 95185 --- [           main] per.sanchar.san.JedisPoolTest            : redis Info: {
    192.168.1.30:7004.rdb_last_bgsave_time_sec=0, 192.168.1.30:7007.used_memory_scripts=0, 192.168.1.30:7003.atomicvar_api=atomic-builtin, 192.168.1.30:7003.maxmemory_human=0B, 192.168.1.31:7005.used_memory_peak_human=2.63M, 192.168.1.30:7003.tracking_total_prefixes=0, 192.168.1.30:7007.loading=0, 192.168.1.30:7004.pubsub_channels=0, 192.168.1.30:7007.aof_last_rewrite_time_sec=-1, 192.168.1.30:7007.used_cpu_user=17.504619, 192.168.1.31:7005.keyspace_misses=0, 192.168.1.31:7005.unexpected_error_replies=0, 192.168.1.30:7004.keyspace_hits=2, 192.168.1.30:7003.aof_rewrite_in_progress=0, 192.168.1.30:7003.redis_version=6.0.10, 192.168.1.30:7004.maxmemory_policy=noeviction, 192.168.1.30:7004.used_cpu_sys=67.222929, 192.168.1.31:7005.expired_stale_perc=0.00, 192.168.1.30:7003.aof_pending_rewrite=0, 192.168.1.30:7003.rdb_last_bgsave_time_sec=0, 192.168.1.30:7004.module_fork_in_progress=0, 192.168.1.30:7004.rdb_last_save_time=1610646811, 192.168.1.30:7007.rdb_last_bgsave_status=ok, 192.168.1.30:7004.used_memory_startup=1461912, 192.168.1.30:7004.connected_clients=1, 192.168.1.31:7005.multiplexing_api=epoll, 192.168.1.30:7004.active_defrag_hits=0, 192.168.1.30:7004.aof_base_size=93, 192.168.1.30:7007.tracking_total_items=0, 192.168.1.30:7004.expired_keys=0, 192.168.1.31:7005.rss_overhead_ratio=2.20, 192.168.1.31:7005.total_connections_received=14, 192.168.1.30:7004.maxmemory=0, 192.168.1.30:7007.used_memory_peak_human=2.70M, 192.168.1.30:7004.used_memory=2719144, 192.168.1.31:7005.rejected_connections=0, 192.168.1.30:7003.keyspace_hits=9, 192.168.1.30:7003.maxmemory_policy=noeviction, 192.168.1.30:7007.uptime_in_days=0, 192.168.1.31:7005.uptime_in_seconds=29713, 192.168.1.31:7005.sync_partial_ok=0, 192.168.1.30:7007.mem_fragmentation_bytes=10841448, 192.168.1.30:7003.allocator_frag_bytes=345848, 192.168.1.30:7007.lazyfree_pending_objects=0, 192.168.1.30:7003.aof_buffer_length=0, 192.168.1.30:7007.io_threaded_reads_processed=0, 192.168.1.30:7004.active_defrag_key_hits=0, 192.168.1.31:7005.sync_partial_err=1, 192.168.1.30:7003.aof_last_write_status=ok, 192.168.1.30:7007.maxmemory=0, 192.168.1.30:7004.tracking_clients=0, 192.168.1.30:7003.aof_last_bgrewrite_status=ok, 192.168.1.30:7004.blocked_clients=0, 192.168.1.30:7004.used_memory_peak_perc=97.11%, 192.168.1.30:7003.master_replid2=0000000000000000000000000000000000000000, 192.168.1.30:7004.repl_backlog_first_byte_offset=1, 192.168.1.31:7005.used_memory_lua=37888, 192.168.1.30:7003.used_cpu_sys_children=0.005521, 192.168.1.30:7003.rdb_last_save_time=1610647528, 192.168.1.30:7003.aof_base_size=0, 192.168.1.30:7004.lru_clock=35435, 192.168.1.30:7007.total_reads_processed=26712, 192.168.1.30:7007.active_defrag_key_misses=0, 192.168.1.31:7005.aof_current_rewrite_time_sec=-1, 192.168.1.31:7005.redis_git_sha1=00000000, 192.168.1.31:7005.aof_last_bgrewrite_status=ok, 192.168.1.30:7003.io_threads_active=0, 192.168.1.30:7007.aof_rewrite_in_progress=0, 192.168.1.30:7004.configured_hz=10, 192.168.1.30:7003.slave_expires_tracked_keys=0, 192.168.1.30:7004.expired_time_cap_reached_count=0, 192.168.1.30:7004.rejected_connections=0, 192.168.1.30:7004.aof_buffer_length=0, 192.168.1.30:7007.allocator_resident=7483392, 192.168.1.30:7007.module_fork_in_progress=0, 192.168.1.30:7004.pubsub_patterns=0, 192.168.1.31:7005.process_id=7978, 192.168.1.30:7007.os=Linux 4.18.0-240.1.1.el8_3.x86_64 x86_64, 192.168.1.31:7005.rss_overhead_bytes=6471680, 192.168.1.30:7007.aof_pending_rewrite=0, 192.168.1.30:7007.run_id=fbae47116c3eae7549a21b2903e3b43ed88b2ea3, 192.168.1.30:7004.gcc_version=8.3.1, 192.168.1.30:7003.expired_stale_perc=0.00, 192.168.1.30:7007.sync_partial_ok=0, 192.168.1.30:7007.used_memory_startup=1460872, 192.168.1.30:7004.process_id=7872, 192.168.1.30:7004.aof_last_write_status=ok, 192.168.1.30:7004.io_threaded_writes_processed=0, 192.168.1.30:7004.uptime_in_days=0, 192.168.1.30:7004.total_system_memory=2933927936, 192.168.1.31:7005.maxmemory_human=0B, 192.168.1.30:7007.executable=/root/redis-server, 192.168.1.31:7005.allocator_allocated=2793296, 192.168.1.30:7004.io_threads_active=0, 192.168.1.30:7004.used_cpu_sys_children=0.007108, 192.168.1.30:7007.used_memory_lua=37888, 192.168.1.31:7005.redis_version=6.0.10, 192.168.1.30:7004.allocator_active=3198976, 192.168.1.30:7004.instantaneous_ops_per_sec=2, 192.168.1.30:7007.rdb_bgsave_in_progress=0, 192.168.1.31:7005.aof_delayed_fsync=0, 192.168.1.30:7004.io_threaded_reads_processed=0, 192.168.1.30:7003.redis_mode=cluster, 192.168.1.30:7003.rss_overhead_ratio=2.18, 192.168.1.30:7004.slave0=ip=192.168.1.29,port=7001,state=online,offset=40067,lag=0, 192.168.1.30:7004.instantaneous_output_kbps=0.24, 192.168.1.30:7004.lazyfree_pending_objects=0, 192.168.1.30:7007.rdb_changes_since_last_save=0, 192.168.1.30:7004.rdb_last_cow_size=4472832, 192.168.1.30:7004.aof_rewrite_buffer_length=0, 192.168.1.30:7003.used_memory_scripts=0, 192.168.1.31:7005.repl_backlog_active=1, 192.168.1.30:7004.rss_overhead_bytes=6520832, 192.168.1.30:7007.rejected_connections=0, 192.168.1.30:7007.atomicvar_api=atomic-builtin, 192.168.1.31:7005.mem_clients_slaves=20512, 192.168.1.30:7003.active_defrag_misses=0, 192.168.1.30:7004.total_reads_processed=25592, 192.168.1.30:7003.used_cpu_user_children=0.002360, 192.168.1.30:7004.active_defrag_key_misses=0, 192.168.1.30:7003.allocator_active=3190784, 192.168.1.30:7003.blocked_clients=0, 192.168.1.30:7007.master_repl_offset=37380, 192.168.1.31:7005.connected_clients=1, 192.168.1.30:7003.lazyfree_pending_objects=0, 192.168.1.30:7003.instantaneous_ops_per_sec=5, 192.168.1.30:7004.repl_backlog_active=1, 192.168.1.31:7005.total_net_output_bytes=63223, 192.168.1.30:7007.maxmemory_human=0B, 192.168.1.30:7007.unexpected_error_replies=0, 192.168.1.30:7003.total_system_memory_human=2.73G, 192.168.1.30:7003.aof_pending_bio_fsync=0, 192.168.1.30:7003.redis_build_id=ac7b00adb80b403e, 192.168.1.30:7003.instantaneous_output_kbps=0.32, 192.168.1.30:7003.aof_enabled=1, 192.168.1.31:7005.os=Linux 4.18.0-240.1.1.el8_3.x86_64 x86_64, 192.168.1.31:7005.instantaneous_ops_per_sec=1, 192.168.1.30:7003.active_defrag_key_misses=0, 192.168.1.30:7004.expire_cycle_cpu_milliseconds=681, 192.168.1.31:7005.tracking_total_keys=0, 192.168.1.31:7005.total_system_memory_human=2.73G, 192.168.1.31:7005.used_memory_lua_human=37.00K, 192.168.1.30:7004.mem_not_counted_for_evict=120, 192.168.1.31:7005.instantaneous_output_kbps=0.00, 192.168.1.30:7003.rss_overhead_bytes=6410240, 192.168.1.30:7004.mem_clients_slaves=20512, 192.168.1.30:7007.total_system_memory=2933927936, 192.168.1.30:7004.aof_current_size=190, 192.168.1.30:7007.total_connections_received=11, 192.168.1.30:7004.arch_bits=64, 192.168.1.30:7004.repl_backlog_size=1048576, 192.168.1.30:7003.repl_backlog_first_byte_offset=1, 192.168.1.31:7005.mem_replication_backlog=1048576, 192.168.1.31:7005.aof_last_cow_size=0, 192.168.1.30:7004.tracking_total_keys=0, 192.168.1.30:7004.rdb_changes_since_last_save=0, 192.168.1.30:7007.total_net_output_bytes=86197, 192.168.1.30:7007.maxmemory_policy=noeviction, 192.168.1.31:7005.master_replid2=0000000000000000000000000000000000000000, 192.168.1.30:7003.used_memory_scripts_human=0B, 192.168.1.31:7005.rdb_last_bgsave_status=ok, 192.168.1.31:7005.total_commands_processed=28762, 192.168.1.30:7007.connected_slaves=1, 192.168.1.31:7005.aof_current_size=103, 192.168.1.31:7005.allocator_rss_ratio=1.71, 192.168.1.30:7003.expired_time_cap_reached_count=0, 192.168.1.30:7004.total_connections_received=13, 192.168.1.30:7003.mem_not_counted_for_evict=122, 192.168.1.31:7005.role=master, 192.168.1.30:7003.second_repl_offset=-1, 192.168.1.31:7005.used_memory_scripts_human=0B, 192.168.1.30:7007.client_recent_max_output_buffer=0, 192.168.1.31:7005.configured_hz=10, 192.168.1.30:7003.latest_fork_usec=1120, 192.168.1.30:7003.used_cpu_sys=67.421992, 192.168.1.31:7005.mem_allocator=jemalloc-5.1.0, 192.168.1.31:7005.used_memory_human=2.59M, 192.168.1.31:7005.total_net_input_bytes=1145253, 192.168.1.30:7003.mem_clients_slaves=20512, 192.168.1.30:7004.multiplexing_api=epoll, 192.168.1.30:7004.mem_replication_backlog=1048576, 192.168.1.31:7005.mem_not_counted_for_evict=130, 192.168.1.30:7004.unexpected_error_replies=0, 192.168.1.30:7003.loading=0, 192.168.1.30:7003.used_memory_peak_perc=96.38%, 192.168.1.30:7007.instantaneous_output_kbps=0.24, 192.168.1.31:7005.allocator_frag_ratio=1.13, 192.168.1.30:7004.used_cpu_user_children=0.003586, 192.168.1.30:7003.used_memory_startup=1460888, 192.168.1.30:7007.aof_rewrite_buffer_length=0, 192.168.1.30:7003.module_fork_in_progress=0, 192.168.1.30:7004.aof_last_bgrewrite_status=ok, 192.168.1.30:7003.expired_keys=0, 192.168.1.30:7003.aof_delayed_fsync=0, 192.168.1.30:7007.role=master, 192.168.1.30:7007.uptime_in_seconds=28162, 192.168.1.31:7005.allocator_resident=5390336, 192.168.1.30:7007.pubsub_channels=0, 192.168.1.31:7005.repl_backlog_histlen=40325, 192.168.1.30:7003.migrate_cached_sockets=0, 192.168.1.31:7005.gcc_version=8.3.1, 192.168.1.31:7005.used_cpu_user=19.740241, 192.168.1.30:7004.run_id=c9946d98f9493e7765062e9ba63b067d995cbd24, 192.168.1.30:7003.total_writes_processed=2957, 192.168.1.31:7005.aof_rewrite_scheduled=0, 192.168.1.30:7003.unexpected_error_replies=0, 192.168.1.31:7005.blocked_clients=0, 192.168.1.30:7004.client_recent_max_input_buffer=8, 192.168.1.31:7005.rdb_last_cow_size=2318336, 192.168.1.30:7004.used_memory_rss=14057472, 192.168.1.30:7004.sync_partial_err=1, 192.168.1.31:7005.allocator_rss_bytes=2240512, 192.168.1.30:7003.multiplexing_api=epoll, 192.168.1.30:7007.process_id=7922, 192.168.1.31:7005.active_defrag_running=0, 192.168.1.30:7004.expired_stale_perc=0.00, 192.168.1.30:7004.sync_full=1, 192.168.1.30:7004.cluster_enabled=1, 192.168.1.30:7004.tcp_port=7004, 192.168.1.31:7005.evicted_keys=0, 192.168.1.30:7003.maxmemory=0, 192.168.1.31:7005.used_memory_peak=2755576, 192.168.1.31:7005.aof_enabled=1, 192.168.1.31:7005.db0=keys=2,expires=0,avg_ttl=0, 192.168.1.30:7004.repl_backlog_histlen=40067, 192.168.1.30:7007.hz=10, 192.168.1.30:7003.uptime_in_days=0, 192.168.1.31:7005.allocator_frag_bytes=356528, 192.168.1.30:7007.mem_aof_buffer=8, 192.168.1.31:7005.redis_build_id=4202bf8dc6d1efb3, 192.168.1.31:7005.rdb_bgsave_in_progress=0, 192.168.1.30:7007.master_replid=bb66da8f8af5b72a46ee7aed3a6a5b6b41f4167e, 192.168.1.30:7007.mem_replication_backlog=1048576, 192.168.1.30:7004.rss_overhead_ratio=1.87, 192.168.1.30:7007.used_memory_lua_human=37.00K, 192.168.1.30:7004.mem_allocator=jemalloc-5.1.0, 192.168.1.30:7007.lru_clock=35435, 192.168.1.30:7003.lru_clock=35435, 192.168.1.30:7007.blocked_clients=0, 192.168.1.30:7003.module_fork_last_cow_size=0, 192.168.1.30:7003.rejected_connections=0, 192.168.1.30:7003.pubsub_channels=0, 192.168.1.30:7003.tracking_clients=0, 192.168.1.30:7007.config_file=/usr/local/redis/cluster/redis_7007.conf, 192.168.1.30:7003.process_id=7866, 192.168.1.30:7007.aof_delayed_fsync=0, 192.168.1.30:7004.keyspace_misses=0, 192.168.1.30:7003.total_reads_processed=28824, 192.168.1.31:7005.connected_slaves=1, 192.168.1.31:7005.rdb_current_bgsave_time_sec=-1, 192.168.1.31:7005.repl_backlog_size=1048576, 192.168.1.30:7003.total_system_memory=2933927936, 192.168.1.31:7005.module_fork_last_cow_size=0, 192.168.1.30:7007.aof_current_rewrite_time_sec=-1, 192.168.1.30:7003.aof_current_rewrite_time_sec=-1, 192.168.1.30:7007.evicted_keys=0, 192.168.1.30:7004.used_cpu_user=18.629607, 192.168.1.30:7003.allocator_resident=5427200, 192.168.1.30:7003.configured_hz=10, 192.168.1.30:7007.active_defrag_key_hits=0, 192.168.1.30:7007.pubsub_patterns=0, 192.168.1.30:7003.mem_allocator=jemalloc-5.1.0, 192.168.1.31:7005.used_memory_rss_human=11.31M, 192.168.1.30:7004.total_system_memory_human=2.73G, 192.168.1.31:7005.used_memory_overhead=2531080, 192.168.1.31:7005.maxmemory=0, 192.168.1.30:7004.migrate_cached_sockets=0, 192.168.1.31:7005.number_of_cached_scripts=0, 192.168.1.30:7007.connected_clients=1, 192.168.1.30:7003.used_memory_rss=11837440, 192.168.1.30:7004.total_writes_processed=5894, 192.168.1.31:7005.second_repl_offset=-1, 192.168.1.30:7007.aof_last_bgrewrite_status=ok, 192.168.1.30:7004.mem_aof_buffer=128, 192.168.1.30:7004.allocator_allocated=2894184, 192.168.1.30:7004.aof_enabled=1, 192.168.1.30:7007.total_net_input_bytes=1006612, 192.168.1.30:7007.total_commands_processed=26695, 192.168.1.30:7003.os=Linux 4.18.0-240.1.1.el8_3.x86_64 x86_64, 192.168.1.30:7003.cluster_enabled=1, 192.168.1.31:7005.hz=10, 192.168.1.30:7003.used_cpu_user=18.995400, 192.168.1.31:7005.lru_clock=35441, 192.168.1.30:7003.repl_backlog_active=1, 192.168.1.30:7007.redis_version=6.0.10, 192.168.1.30:7003.rdb_last_bgsave_status=ok, 192.168.1.31:7005.clients_in_timeout_table=0, 192.168.1.30:7007.latest_fork_usec=1643, 192.168.1.30:7003.expire_cycle_cpu_milliseconds=756, 192.168.1.30:7003.executable=/usr/local/redis/cluster/redis-server, 192.168.1.31:7005.rdb_changes_since_last_save=0, 192.168.1.30:7004.used_memory_scripts_human=0B, 192.168.1.31:7005.active_defrag_misses=0, 192.168.1.30:7003.client_recent_max_input_buffer=8, 192.168.1.31:7005.slave_expires_tracked_keys=0, 192.168.1.30:7007.aof_last_cow_size=0, 192.168.1.30:7004.second_repl_offset=4635, 192.168.1.30:7003.uptime_in_seconds=29727, 192.168.1.31:7005.mem_fragmentation_ratio=4.47, 192.168.1.30:7003.master_repl_offset=40517, 192.168.1.30:7007.active_defrag_running=0, 192.168.1.30:7003.used_memory_peak_human=2.68M, 192.168.1.31:7005.used_memory_dataset=184952, 192.168.1.31:7005.io_threaded_writes_processed=0, 192.168.1.30:7003.pubsub_patterns=0, 192.168.1.31:7005.used_memory_dataset_perc=14.75%, 192.168.1.30:7004.redis_git_dirty=0, 192.168.1.31:7005.used_memory_scripts=0, 192.168.1.30:7007.keyspace_hits=0, 192.168.1.30:7003.tracking_total_keys=0, 192.168.1.31:7005.aof_last_write_status=ok, 192.168.1.30:7007.multiplexing_api=epoll, 192.168.1.31:7005.pubsub_channels=0, 192.168.1.31:7005.used_cpu_sys_children=0.004787, 192.168.1.30:7007.expired_time_cap_reached_count=0, 192.168.1.30:7004.redis_mode=cluster, 192.168.1.30:7007.redis_git_sha1=00000000, 192.168.1.30:7007.used_memory_human=2.59M, 192.168.1.30:7007.aof_base_size=0, 192.168.1.30:7004.total_net_input_bytes=960257, 192.168.1.30:7004.uptime_in_seconds=29721, 192.168.1.30:7007.arch_bits=64, 192.168.1.31:7005.uptime_in_days=0, 192.168.1.30:7007.allocator_allocated=2791032, 192.168.1.30:7003.arch_bits=64, 192.168.1.30:7004.mem_fragmentation_ratio=5.17, 192.168.1.30:7004.total_commands_processed=25572, 192.168.1.31:7005.tcp_port=7005, 192.168.1.31:7005.aof_buffer_length=0, 192.168.1.30:7003.aof_current_size=239, 192.168.1.31:7005.tracking_total_items=0, 192.168.1.31:7005.expired_time_cap_reached_count=0, 192.168.1.30:7007.instantaneous_ops_per_sec=2, 192.168.1.30:7004.allocator_rss_ratio=2.36, 192.168.1.31:7005.client_recent_max_output_buffer=0, 192.168.1.30:7003.mem_replication_backlog=1048576, 192.168.1.30:7007.total_system_memory_human=2.73G, 192.168.1.31:7005.mem_fragmentation_bytes=9209464, 192.168.1.30:7004.evicted_keys=0, 192.168.1.30:7007.repl_backlog_active=1, 192.168.1.30:7003.total_commands_processed=28796, 192.168.1.31:7005.used_memory_rss=11862016, 192.168.1.31:7005.io_threads_active=0, 192.168.1.30:7007.mem_clients_normal=20504, 192.168.1.30:7007.tracking_clients=0, 192.168.1.30:7007.used_memory_rss_human=12.93M, 192.168.1.30:7004.rdb_last_bgsave_status=ok, 192.168.1.30:7004.atomicvar_api=atomic-builtin, 192.168.1.30:7003.rdb_bgsave_in_progress=0, 192.168.1.31:7005.tracking_total_prefixes=0, 192.168.1.30:7004.os=Linux 4.18.0-240.1.1.el8_3.x86_64 x86_64, 192.168.1.30:7007.configured_hz=10, 192.168.1.31:7005.aof_rewrite_in_progress=0, 192.168.1.31:7005.used_cpu_user_children=0.000914, 192.168.1.30:7004.redis_git_sha1=00000000, 192.168.1.30:7004.tracking_total_items=0, 192.168.1.30:7003.mem_clients_normal=20504, 192.168.1.30:7004.used_memory_peak_human=2.67M, 192.168.1.30:7004.mem_fragmentation_bytes=11339880, 192.168.1.30:7004.used_memory_peak=2800080, 192.168.1.30:7004.module_fork_last_cow_size=0, 192.168.1.31:7005.latest_fork_usec=1400, 192.168.1.30:7003.redis_git_dirty=0, 192.168.1.30:7007.used_memory_scripts_human=0B, 192.168.1.30:7007.tracking_total_keys=0, 192.168.1.30:7003.connected_clients=1, 192.168.1.31:7005.arch_bits=64, 192.168.1.30:7004.aof_delayed_fsync=0, 192.168.1.30:7004.allocator_frag_ratio=1.11, 192.168.1.30:7003.rdb_current_bgsave_time_sec=-1, 192.168.1.30:7007.number_of_cached_scripts=0, 192.168.1.30:7004.allocator_rss_bytes=4337664, 192.168.1.31:7005.aof_pending_rewrite=0, 192.168.1.30:7007.used_memory_rss=13553664, 192.168.1.30:7007.mem_not_counted_for_evict=0, 192.168.1.30:7007.expire_cycle_cpu_milliseconds=746, 192.168.1.30:7004.allocator_resident=7536640, 192.168.1.30:7004.aof_current_rewrite_time_sec=-1, 192.168.1.31:7005.used_memory_startup=1461720, 192.168.1.31:7005.pubsub_patterns=0, 192.168.1.30:7004.tracking_total_prefixes=0, 192.168.1.30:7007.sync_full=1, 192.168.1.30:7003.repl_backlog_histlen=40517, 192.168.1.30:7003.sync_partial_err=1, 192.168.1.30:7003.sync_full=1, 192.168.1.31:7005.active_defrag_key_hits=0, 192.168.1.31:7005.aof_pending_bio_fsync=0, 192.168.1.30:7004.aof_rewrite_in_progress=0, 192.168.1.30:7003.config_file=/usr/local/redis/cluster/redis_7003.conf, 192.168.1.30:7007.repl_backlog_size=1048576, 192.168.1.30:7007.used_cpu_user_children=0.000945, 192.168.1.30:7003.used_memory_peak=2810784, 192.168.1.30:7007.allocator_active=3145728, 192.168.1.30:7007.cluster_enabled=1, 192.168.1.30:7004.connected_slaves=1, 192.168.1.30:7007.allocator_rss_ratio=2.38, 192.168.1.30:7004.aof_pending_rewrite=0, 192.168.1.31:7005.master_repl_offset=40325, 192.168.1.31:7005.io_threaded_reads_processed=0, 192.168.1.30:7007.clients_in_timeout_table=0, 192.168.1.31:7005.maxmemory_policy=noeviction, 192.168.1.30:7007.aof_last_write_status=ok, 192.168.1.30:7003.aof_last_cow_size=0, 192.168.1.30:7004.loading=0, 192.168.1.30:7003.mem_aof_buffer=128, 192.168.1.30:7007.slave_expires_tracked_keys=0, 192.168.1.30:7004.used_memory_rss_human=13.41M, 192.168.1.30:7007.used_cpu_sys_children=0.003039, 192.168.1.31:7005.master_replid=077aefe0e9768f38fd0dd79fb416c5cd98379a4c, 192.168.1.30:7007.master_replid2=0000000000000000000000000000000000000000, 192.168.1.30:7003.used_memory_lua_human=37.00K, 192.168.1.30:7003.total_net_output_bytes=101624, 192.168.1.30:7007.rdb_last_save_time=1610620865, 192.168.1.30:7007.allocator_frag_ratio=1.13, 192.168.1.30:7004.allocator_frag_bytes=304792, 192.168.1.30:7004.role=master, 192.168.1.30:7007.used_memory_dataset_perc=13.03%, 192.168.1.30:7003.connected_slaves=1, 192.168.1.30:7007.active_defrag_hits=0, 192.168.1.30:7003.hz=10, 192.168.1.30:7004.slave_expires_tracked_keys=0, 192.168.1.30:7003.rdb_changes_since_last_save=4, 192.168.1.30:7007.keyspace_misses=0, 192.168.1.30:7004.rdb_bgsave_in_progress=0, 192.168.1.31:7005.used_cpu_sys=69.783998, 192.168.1.30:7007.repl_backlog_histlen=37380, 192.168.1.30:7003.allocator_allocated=2844936, 192.168.1.30:7007.tcp_port=7007, 192.168.1.30:7004.master_repl_offset=40067, 192.168.1.30:7003.used_memory_human=2.58M, 192.168.1.30:7004.aof_last_cow_size=2289664, 192.168.1.30:7007.rdb_current_bgsave_time_sec=-1, 192.168.1.30:7004.number_of_cached_scripts=0, 192.168.1.31:7005.slave0=ip=192.168.1.29,port=7002,state=online,offset=40325,lag=1, 192.168.1.30:7003.active_defrag_hits=0, 192.168.1.30:7007.tracking_total_prefixes=0, 192.168.1.31:7005.sync_full=1, 192.168.1.31:7005.tracking_clients=0, 192.168.1.30:7007.allocator_rss_bytes=4337664, 192.168.1.30:7004.sync_partial_ok=0, 192.168.1.30:7007.redis_mode=cluster, 192.168.1.30:7007.expired_stale_perc=0.00, 192.168.1.30:7003.used_memory=2708904, 192.168.1.31:7005.migrate_cached_sockets=0, 192.168.1.31:7005.expired_keys=0, 192.168.1.31:7005.total_writes_processed=2928, 192.168.1.30:7007.instantaneous_input_kbps=0.08, 192.168.1.30:7003.slave0=ip=192.168.1.31,port=7006,state=online,offset=40450,lag=0, 192.168.1.31:7005.used_memory_peak_perc=98.56%, 192.168.1.31:7005.total_system_memory=2933927936, 192.168.1.30:7003.tcp_port=7003, 192.168.1.30:7004.used_memory_lua=37888, 192.168.1.30:7007.aof_current_size=0, 192.168.1.30:7004.used_memory_lua_human=37.00K, 192.168.1.30:7007.module_fork_last_cow_size=0, 192.168.1.30:7007.client_recent_max_input_buffer=8, 192.168.1.30:7003.number_of_cached_scripts=0, 192.168.1.31:7005.redis_git_dirty=0, 192.168.1.30:7003.total_net_input_bytes=1141805, 192.168.1.30:7007.used_memory=2713768, 192.168.1.30:7007.aof_rewrite_scheduled=0, 192.168.1.30:7004.used_memory_overhead=2551704, 192.168.1.30:7004.clients_in_timeout_table=0, 192.168.1.30:7004.master_replid2=a37355021b5b210a37bdf73177dd6f96030311f9, 192.168.1.30:7003.rdb_last_cow_size=4460544, 192.168.1.30:7004.used_memory_human=2.59M, 192.168.1.30:7003.used_memory_overhead=2550680, 192.168.1.31:7005.atomicvar_api=atomic-builtin, 192.168.1.30:7007.rss_overhead_ratio=1.81, 192.168.1.30:7007.allocator_frag_bytes=354696, 192.168.1.30:7007.used_cpu_sys=63.475495, 192.168.1.31:7005.mem_clients_normal=0, 192.168.1.30:7004.aof_last_rewrite_time_sec=0, 192.168.1.31:7005.client_recent_max_input_buffer=8, 192.168.1.30:7003.keyspace_misses=2, 192.168.1.30:7007.repl_backlog_first_byte_offset=1, 192.168.1.30:7004.master_replid=d262cb91b8b147ce5a15de0b711ca9fdc5754595, 192.168.1.31:7005.lazyfree_pending_objects=0, 192.168.1.30:7007.migrate_cached_sockets=0, 192.168.1.30:7003.aof_rewrite_scheduled=0, 192.168.1.30:7003.clients_in_timeout_table=0, 192.168.1.30:7007.total_writes_processed=2704, 192.168.1.30:7004.used_memory_dataset_perc=13.32%, 192.168.1.30:7003.client_recent_max_output_buffer=0, 192.168.1.31:7005.redis_mode=cluster, 192.168.1.30:7007.aof_buffer_length=0, 192.168.1.30:7003.used_memory_dataset=158224, 192.168.1.31:7005.config_file=/usr/local/redis/cluster/redis_7005.conf, 192.168.1.31:7005.loading=0, 192.168.1.30:7004.used_memory_dataset=167440, 192.168.1.31:7005.allocator_active=3149824, 192.168.1.30:7007.expired_keys=0, 192.168.1.30:7004.maxmemory_human=0B, 192.168.1.30:7007.aof_pending_bio_fsync=0, 192.168.1.30:7003.active_defrag_running=0, 192.168.1.30:7003.gcc_version=8.3.1, 192.168.1.30:7007.redis_build_id=ac7b00adb80b403e, 192.168.1.30:7004.rdb_current_bgsave_time_sec=-1, 192.168.1.30:7004.total_net_output_bytes=179321, 192.168.1.31:7005.active_defrag_key_misses=0, 192.168.1.30:7004.used_memory_scripts=0, 192.168.1.30:7004.active_defrag_misses=0, 192.168.1.31:7005.repl_backlog_first_byte_offset=1, 192.168.1.30:7007.redis_git_dirty=0, 192.168.1.30:7007.rdb_last_bgsave_time_sec=1, 192.168.1.30:7007.io_threaded_writes_processed=0, 192.168.1.30:7003.mem_fragmentation_ratio=4.37, 192.168.1.30:7003.io_threaded_writes_processed=0, 192.168.1.30:7004.db0=keys=1,expires=0,avg_ttl=0, 192.168.1.31:7005.keyspace_hits=2, 192.168.1.31:7005.instantaneous_input_kbps=0.04, 192.168.1.30:7003.used_memory_dataset_perc=12.68%, 192.168.1.30:7007.io_threads_active=0, 192.168.1.30:7007.gcc_version=8.3.1, 192.168.1.30:7007.used_memory_overhead=2550472, 192.168.1.30:7003.role=master, 192.168.1.30:7003.aof_last_rewrite_time_sec=-1, 192.168.1.30:7004.mem_clients_normal=20504, 192.168.1.30:7003.master_replid=a236cf435d35555d623eda1057bb4be335594aca, 192.168.1.30:7003.allocator_rss_ratio=1.70, 192.168.1.30:7003.evicted_keys=0, 192.168.1.31:7005.expire_cycle_cpu_milliseconds=937, 192.168.1.30:7004.instantaneous_input_kbps=0.08, 192.168.1.31:7005.executable=/usr/local/redis/cluster/redis-server, 192.168.1.30:7003.repl_backlog_size=1048576, 192.168.1.30:7003.redis_git_sha1=00000000, 192.168.1.30:7007.rss_overhead_bytes=6070272, 192.168.1.30:7007.sync_partial_err=1, 192.168.1.30:7003.sync_partial_ok=0, 192.168.1.31:7005.total_reads_processed=28788, 192.168.1.30:7004.hz=10, 192.168.1.30:7004.executable=/usr/local/redis/cluster/redis-server, 192.168.1.31:7005.mem_aof_buffer=160, 192.168.1.30:7003.aof_rewrite_buffer_length=0, 192.168.1.30:7007.rdb_last_cow_size=2338816, 192.168.1.30:7004.aof_rewrite_scheduled=0, 192.168.1.30:7007.used_memory_peak=2836088, 192.168.1.31:7005.aof_last_rewrite_time_sec=-1, 192.168.1.31:7005.aof_base_size=0, 192.168.1.30:7003.total_connections_received=17, 192.168.1.30:7003.used_memory_lua=37888, 192.168.1.30:7003.instantaneous_input_kbps=0.18, 192.168.1.30:7004.active_defrag_running=0, 192.168.1.30:7003.active_defrag_key_hits=0, 192.168.1.30:7007.aof_enabled=1, 192.168.1.31:7005.aof_rewrite_buffer_length=0, 192.168.1.31:7005.cluster_enabled=1, 192.168.1.30:7004.latest_fork_usec=2842, 192.168.1.30:7007.slave0=ip=192.168.1.31,port=7008,state=online,offset=37380,lag=0, 192.168.1.30:7004.redis_build_id=ac7b00adb80b403e, 192.168.1.30:7007.second_repl_offset=-1, 192.168.1.30:7004.redis_version=6.0.10, 192.168.1.30:7004.config_file=/usr/local/redis/cluster/redis_7004.conf, 192.168.1.30:7007.active_defrag_misses=0, 192.168.1.30:7007.mem_allocator=jemalloc-5.1.0, 192.168.1.31:7005.run_id=1a735b585bc2c852e26b69da2a81cfc1da691756, 192.168.1.31:7005.used_memory=2716032, 192.168.1.30:7003.db0=keys=1,expires=0,avg_ttl=0, 192.168.1.30:7003.io_threaded_reads_processed=0, 192.168.1.31:7005.rdb_last_save_time=1610619663, 192.168.1.30:7003.tracking_total_items=0, 192.168.1.30:7003.mem_fragmentation_bytes=9130088, 192.168.1.30:7004.client_recent_max_output_buffer=0, 192.168.1.31:7005.module_fork_in_progress=0, 192.168.1.30:7003.used_memory_rss_human=11.29M, 192.168.1.31:7005.active_defrag_hits=0, 192.168.1.30:7007.mem_clients_slaves=20512, 192.168.1.30:7007.used_memory_peak_perc=95.69%, 192.168.1.31:7005.rdb_last_bgsave_time_sec=0, 192.168.1.30:7007.used_memory_dataset=163296, 192.168.1.30:7004.aof_pending_bio_fsync=0, 192.168.1.30:7003.run_id=5f73ddc0ed3b70b9d2f5f83550bb0a5924347af4, 192.168.1.30:7003.allocator_rss_bytes=2236416, 192.168.1.30:7007.mem_fragmentation_ratio=5.00, 192.168.1.30:7003.allocator_frag_ratio=1.12}
  相关解决方案