代码之家  ›  专栏  ›  技术社区  ›  rubik

redis键随机消失

  •  0
  • rubik  · 技术社区  · 6 年前

    我对redis有一个问题,它只出现在生产中,我不能在本地复制它。

    我有11台服务器向redis发送数据,每台服务器增加一个散列映射的成员(每台服务器都有自己的散列映射)。

    随机的时候散列映射消失了,我看到所有的计数都从0开始。

    注意:

    • 钥匙不是 期满 :任何密钥上均未设置过期或ttl;
    • 钥匙不是 驱逐 以下内容: maxmemory 未设置并且 maxmemory-policy no-eviction 无论如何;
    • redis从来没有内存问题,因为它在一个有15gb空闲ram的服务器上,而且它从来没有崩溃过;
    • INFO 报告13个连接的客户端,这是有意义的:11个服务器+1个本地监视应用程序+用于获取 信息 命令。

    我不知道去哪里找了。

    以下是 信息 命令:

    # Server
    redis_version:3.2.6
    redis_git_sha1:00000000
    redis_git_dirty:0
    redis_build_id:5a93b34a97c2cde8
    redis_mode:standalone
    os:Linux 4.9.0-6-amd64 x86_64
    arch_bits:64
    multiplexing_api:epoll
    gcc_version:6.3.0
    process_id:1394
    run_id:ff6063b446dab8248fe9db118d2993a9de4252c8
    tcp_port:6379
    uptime_in_seconds:186923
    uptime_in_days:2
    hz:10
    lru_clock:2982223
    executable:/usr/bin/redis-server
    config_file:/etc/redis/redis.conf
    
    # Clients
    connected_clients:13
    client_longest_output_list:0
    client_biggest_input_buf:0
    blocked_clients:0
    
    # Memory
    used_memory:1067336
    used_memory_human:1.02M
    used_memory_rss:3784704
    used_memory_rss_human:3.61M
    used_memory_peak:1471928
    used_memory_peak_human:1.40M
    total_system_memory:27401003008
    total_system_memory_human:25.52G
    used_memory_lua:37888
    used_memory_lua_human:37.00K
    maxmemory:0
    maxmemory_human:0B
    maxmemory_policy:noeviction
    mem_fragmentation_ratio:3.55
    mem_allocator:jemalloc-3.6.0
    
    # Persistence
    loading:0
    rdb_changes_since_last_save:13854793
    rdb_bgsave_in_progress:0
    rdb_last_save_time:1529530575
    rdb_last_bgsave_status:err
    rdb_last_bgsave_time_sec:0
    rdb_current_bgsave_time_sec:-1
    aof_enabled:0
    aof_rewrite_in_progress:0
    aof_rewrite_scheduled:0
    aof_last_rewrite_time_sec:-1
    aof_current_rewrite_time_sec:-1
    aof_last_bgrewrite_status:ok
    aof_last_write_status:ok
    
    # Stats
    total_connections_received:185
    total_commands_processed:19637940
    instantaneous_ops_per_sec:121
    total_net_input_bytes:752885632
    total_net_output_bytes:1197081334
    instantaneous_input_kbps:4.61
    instantaneous_output_kbps:9.27
    rejected_connections:0
    sync_full:0
    sync_partial_ok:0
    sync_partial_err:0
    expired_keys:0
    evicted_keys:0
    keyspace_hits:1333722
    keyspace_misses:120814
    pubsub_channels:0
    pubsub_patterns:0
    latest_fork_usec:185
    migrate_cached_sockets:0
    
    # Replication
    role:master
    connected_slaves:0
    master_repl_offset:0
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    
    # CPU
    used_cpu_sys:262.40
    used_cpu_user:207.39
    used_cpu_sys_children:0.00
    used_cpu_user_children:0.00
    
    # Cluster
    cluster_enabled:0
    
    # Keyspace
    db0:keys=14,expires=0,avg_ttl=0
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Sripathi Krishnan    6 年前

    很可能redis服务器正在重新启动,而您正在丢失数据,因为redis无法保存到磁盘。

    RDB上次保存状态为错误,因此从未创建数据。同时,aof被禁用。如果redis重新启动,它将以清除所有数据开始。

    检查日志-很可能redis没有写入磁盘的权限。另外,我相信你会看到一些条目暗示redis正在重新启动。