首先,我们需要澄清你所说的意外。

通过

所有更新仅反映在该会话的redis客户端中。

一旦重新启动,它就会转换为旧值。

你的意思是说你重启客户端或服务器?数据是否从客户端的服务器中消失了? “旧价值”来自何处?

现在了解如何获取有关可能出现问题的更多信息,并解决服务器重启时数据从服务器中消失的情况。

由于信息有限,这听起来好像数据没有持久存储到磁盘上。可能有几个原因。

打开redis-cli会话到Redis实例(redis-cli如果在服务器本身上,否则你需要将主机和端口传递给它。)

接下来运行命令info persistence。当Redis尝试将数据写入文件系统时,这将告诉您/我们是否存在问题。如果上次保存的状态为“ok”,则您的进程无法在(/默认情况下)/var/lib/redis/dump.rdb中写入转储文件。在这种情况下,我希望有一个权限问题。因为它可能是磁盘空间问题。

假设没有空间问题,请检查目录/ var / lib / redis及其中的文件的权限。如果它们与运行redis-server的用户不匹配,则需要通过chown -R redisuser:redisgroup /var/lib/redis更正它们,其中redisuser和redisgroup与运行redis-server的用户匹配。完成此操作后,返回/进入CLI并发出BGSAVE。等待几秒钟,然后重新运行info persistence命令以验证您是否可以保存。

如果仍然失败,我建议在终端中运行redis-server查看输出,然后重新运行保存,以便查看报告的错误。如果你记录了这个,那么检查日志中的错误。

如果保存成功,则服务器将存储数据,并且在服务器端重新启动后将继续存在。如果是这种情况,并且当客户端重新启动时数据从客户端“消失”,我们将需要从客户端查看代码以确切地确定它正在做什么。