重新启动服务器后,存在的数据是redis消失了。到昨天它是正确的。突然它今天发生。到目前为止,配置没有任何变化。所有设置都是默认设置。
更新: 所有更新都只反映在该会话的redis客户端中。一旦重新启动,我就会转到旧值本身。
想象错误:
不幸的是我是redis的新手。所以我不知道redis的持久性。我做了bgsave
实现并且我也知道快照
答案 0 :(得分:2)
首先,我们需要澄清你所说的意外。
通过
所有更新仅反映在该会话的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查看输出,然后重新运行保存,以便查看报告的错误。如果你记录了这个,那么检查日志中的错误。
如果保存成功,则服务器将存储数据,并且在服务器端重新启动后将继续存在。如果是这种情况,并且当客户端重新启动时数据从客户端“消失”,我们将需要从客户端查看代码以确切地确定它正在做什么。
干杯, 比尔