使用Redis实现无停机的数据丢失

使用Redis实现无停机的数据丢失,redis,Redis,Redis似乎丢失了我的一些数据,而服务器进程却没有停止。第一个保存的新数据似乎是在12:26。Redis的日志如下所示。redis cli信息统计显示进程正常运行时间为3天。此RDB后台保存是否失败?有足够的可用磁盘空间 Redis版本是4.0.6 24121:M 16 Dec 12:17:26.011 * 10 changes in 300 seconds. Saving... 24121:M 16 Dec 12:17:26.117 * Background saving started b

Redis似乎丢失了我的一些数据,而服务器进程却没有停止。第一个保存的新数据似乎是在12:26。Redis的日志如下所示。redis cli信息统计显示进程正常运行时间为3天。此RDB后台保存是否失败?有足够的可用磁盘空间

Redis版本是4.0.6

24121:M 16 Dec 12:17:26.011 * 10 changes in 300 seconds. Saving...
24121:M 16 Dec 12:17:26.117 * Background saving started by pid 370
370:C 16 Dec 12:17:44.994 * DB saved on disk
370:C 16 Dec 12:17:45.068 * RDB: 167 MB of memory used by copy-on-write
24121:M 16 Dec 12:17:45.260 * Background saving terminated with success
24121:M 16 Dec 12:21:19.891 * DB saved on disk
24121:M 16 Dec 12:21:21.465 * DB saved on disk
24121:M 16 Dec 12:22:00.152 * DB saved on disk
24121:M 16 Dec 12:22:00.474 * DB saved on disk
24121:M 16 Dec 12:22:32.699 * DB saved on disk
24121:M 16 Dec 12:22:33.044 * DB saved on disk
24121:M 16 Dec 12:22:33.579 * DB saved on disk
24121:M 16 Dec 12:22:33.993 * DB saved on disk
24121:M 16 Dec 12:22:34.462 * DB saved on disk
24121:M 16 Dec 12:22:35.167 * DB saved on disk
24121:M 16 Dec 12:22:35.500 * DB saved on disk
24121:M 16 Dec 12:22:36.107 * DB saved on disk
24121:M 16 Dec 12:23:02.170 * DB saved on disk
24121:M 16 Dec 12:23:02.564 * DB saved on disk
24121:M 16 Dec 12:23:02.853 * DB saved on disk
24121:M 16 Dec 12:23:03.142 * DB saved on disk
24121:M 16 Dec 12:23:03.505 * DB saved on disk
24121:M 16 Dec 12:23:03.792 * DB saved on disk
24121:M 16 Dec 12:23:04.174 * DB saved on disk
24121:M 16 Dec 12:23:04.526 * DB saved on disk
24121:M 16 Dec 12:23:04.898 * DB saved on disk
24121:M 16 Dec 12:23:05.214 * DB saved on disk
24121:M 16 Dec 12:23:05.573 * DB saved on disk
24121:M 16 Dec 12:23:06.078 * DB saved on disk
24121:M 16 Dec 12:23:06.266 * DB saved on disk
24121:M 16 Dec 12:23:06.452 * DB saved on disk
24121:M 16 Dec 12:23:19.422 * DB saved on disk
24121:M 16 Dec 12:23:29.048 * DB saved on disk
24121:M 16 Dec 12:23:38.699 * DB saved on disk
24121:M 16 Dec 12:23:48.633 * DB saved on disk
24121:M 16 Dec 12:23:58.422 * DB saved on disk
24121:M 16 Dec 12:24:08.165 * DB saved on disk
24121:M 16 Dec 12:24:18.620 * DB saved on disk
24121:M 16 Dec 12:24:28.847 * DB saved on disk
24121:M 16 Dec 12:24:38.802 * DB saved on disk
24121:M 16 Dec 12:24:48.660 * DB saved on disk
24121:M 16 Dec 12:24:58.978 * DB saved on disk
24121:M 16 Dec 12:25:11.011 * DB saved on disk
24121:M 16 Dec 12:25:21.948 * DB saved on disk
24121:M 16 Dec 12:25:32.383 * DB saved on disk
24121:M 16 Dec 12:25:43.789 * DB saved on disk
24121:M 16 Dec 12:25:58.678 * DB saved on disk
24121:M 16 Dec 12:26:10.804 * DB saved on disk
24121:M 16 Dec 12:26:21.522 * DB saved on disk
24121:M 16 Dec 12:26:32.147 * DB saved on disk
24121:M 16 Dec 12:26:42.517 * DB saved on disk
24121:M 16 Dec 12:26:52.922 * DB saved on disk
24121:M 16 Dec 12:31:53.081 * 10 changes in 300 seconds. Saving...
24121:M 16 Dec 12:31:53.092 * Background saving started by pid 8671
8671:C 16 Dec 12:31:54.833 * DB saved on disk
8671:C 16 Dec 12:31:54.839 * RDB: 12 MB of memory used by copy-on-write
24121:M 16 Dec 12:31:54.898 * Background saving terminated with success
我想这为你的问题提供了答案:

Redis并不是真的随机丢失密钥。如果钥匙不见了, 那么很可能是因为以下原因之一:

过期:键上指定的TTL被命中,因此系统被删除 钥匙。有关Redis过期的更多详细信息,请参阅 Expires命令的文档。TTL值可通过以下方式设置: SET、PSETEX或EXPIRE等操作

INFO命令可用于获取关于有多少关键点的统计信息 使用STATS部分下的expired_keys条目过期。你可以 还可以查看具有TTL值的键的数量以及平均值 TTL值,在键空间部分

# Stats
expired_keys:46583

# Keyspace 
db0:keys=3450,expires=2,avg_ttl=91861015336    
See related article with debugging tips
驱逐: 在内存压力下,系统将退出按键以释放内存。当信息中的“已用内存”或“已用内存”rss值 命令接近已配置的
maxmemory
设置,系统将 开始根据配置的内存策略从内存中逐出密钥 如本文所述。您可以使用监视退出的密钥数 前面提到的相同INFO命令

# Stats
evicted_keys:13224

(欢迎来到SO!)(这有点集中在“编程”上-服务器端DB问题可能会比at更好。)
Redis似乎丢失了我的一些数据…
请说明是什么造成了这种印象。如果运行
Redis server
,有时您会看到配置警告。如果内存可用,其中一个警告与后台保存有关。您可能希望从命令行运行服务器并检查警告。具有非常长TTL(多天)的密钥突然作为一个组消失。redis的内存使用率大幅下降。