当前数据为redis,重新启动服务器后立即消失。直到昨天,它还是合适的。今天突然发生了。到目前为止还没有对配置进行任何更改。所有设置均为默认设置。
更新:所有的更新都反映在redis客户端仅为该会话。一旦重启,我就会回到原来的值。
发现错误:
不幸的是我是redis的新手。所以我不知道redis的持久性。我做了bgsave
我也知道快照
首先,我们需要澄清你所说的是出乎意料的。
所有的更新都反映在redis客户端仅为该会话。一旦重启,它就会回到原来的值。
你的意思是重启客户端还是服务器?数据是从服务器还是从客户端消失?"旧价值"从何而来?
现在来看看如何获得更多的信息,了解可能的问题是什么,并解决在服务器重新启动时数据从服务器消失的情况。
由于可用的信息有限,这听起来像是数据没有持久化到磁盘。
打开Redis -cli会话到Redis实例(redis-cli
如果在服务器上,否则你需要传递host和port给它)。
下一步执行命令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查看输出,并重新运行保存,以便您可以查看报告的错误。如果您已将其记录下来,那么请检查日志中是否存在错误。
如果保存成功,则数据由服务器存储,并且在服务器端重新启动后仍然有效。如果是这种情况,当客户端重启时数据从客户端"消失",我们需要查看客户端的代码来确定它到底在做什么。
欢呼,比尔