事件
1,上周,遇到了机器内存爆满。于是执行了Linux命令sysctl -wvm.drop_caches=3
清理内存。
2,今天发现测试机器的以6379端口启动的进程退出了,redis-cli
连接不到redis-server
(其他端口启动的redis并未退出)
3,目前怀疑是linux的内存满了,导致自己杀死了redis的进程。
4,后来找到dump.rdb文件然后重启redis-server服务。
问题
1,redis重启之后发现数据有丢失
2,redis进程到底被谁杀死的,因为未设置logfile,无法找到日志记录
思考
1,redis启动时的配置文件一定要设置如下几项
#requirepass 去掉#,修改为: requirepass ntt2018
port 6380
daemonize no 改为yes
logfile“./redis_6380.log” #redis启动的日志保存在项目当前目录下
pidfile ./redis_6380.pid #redis启动的pid记录(防止被多次启动覆盖,每次启动之前将pidfile文件重命名)
根据实际项目需要,一定要更改,不要选用默认
save 900 1
save 300 10
save 60 10000
2,关于redis’到底使用那种持久化方式,可以参考如下的几篇连接
Redis重启时加载持久化文件
Redis持久化之RDB
Redis持久化之AOF
我的项目中选用的RDB持久化,AOF的方式还没有实现过
3.redis进程意外退出原因排查
Redis进程异常退出排查
Redis进程异常退出排查
这个时候就知道pidfile和logfile设置的重要性了
4,redis的配置文件详解
Redis的配置文件