Redis密钥会随机消失

时间:2018-06-22 23:15:40

标签: redis

我的Redis出现了一个问题,该问题仅在生产中出现,并且无法在本地复制。

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

在随机时间,散列图消失了,我又看到了所有从0开始的计数。

请注意:

  • 密钥未已过期:任何密钥均未设置过期或ttl;
  • 键未移出:未设置maxmemory,而maxmemory-policyno-eviction
  • Redis永远不会出现内存问题,因为它位于具有15GB可用RAM的服务器上,并且无论如何都不会崩溃;
  • INFO报告了13个已连接的客户端,这很有意义:11个服务器+ 1个我在本地具有的监视应用程序+用于获取INFO命令输出的连接。

我不知道要看哪里了。

以下是INFO命令的输出:

# 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 个答案:

答案 0 :(得分:1)

很有可能Redis服务器正在重新启动,并且由于Redis无法保存到磁盘,您正在丢失数据。

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

检查日志-很可能Redis没有写磁盘权限。另外,我确定您会看到提示Redis正在重新启动的条目。