redis持久化数据加载检测
1.此脚本的功能,重启服务器之后或者重启redis容器之后,检测redis将aof持久化数据是否加载完成,加载完成之后再去启动其他业务服务,防止业务服务连接不上redis
2.脚本(修改自己的redis连接信息等)
[root@snort shell]# cat check_redis_persistence_status.sh #!/bin/bash # Redis配置 REDIS_HOST="localhost" # Redis主机 REDIS_PORT="6379" # Redis端口 REDIS_PASS="123456" # Redis密码 REDIS_CONTAINER_NAME="redis" # Redis容器名称 PERSISTENCE_LOADING_MSG="loading:0" # 持久化加载完成的消息 # 日志文件 REDIS_LOG="/data/aibox-common/redis/shell/redis.log" # 获取当前时间(精确到秒) get_current_time() { date +"%Y-%m-%d %H:%M:%S" } # 检查Redis是否持久化数据加载完成 check_redis_persistence() { persistence_info=$(docker exec "$REDIS_CONTAINER_NAME" redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" -a "$REDIS_PASS" info persistence) echo "$(get_current_time) - Redis持久化信息:$persistence_info" >> "$REDIS_LOG" if [[ $persistence_info =~ $PERSISTENCE_LOADING_MSG ]]; then echo "$(get_current_time) - Redis持久化数据加载完成." >> "$REDIS_LOG" return 0 else echo "$(get_current_time) - Redis持久化数据正在加载中..." >> "$REDIS_LOG" return 1 fi } # 主循环,等待持久化数据加载完成 wait_for_redis_persistence() { echo "$(get_current_time) - 等待Redis持久化数据加载完成..." >> "$REDIS_LOG" while ! check_redis_persistence; do sleep 1 done } # 启动业务服务 start_my_service() { echo "$(get_current_time) - 启动业务服务..." >> "$REDIS_LOG" docker restart cm # 这里是启动你的业务服务的命令,替换为你的实际命令 } # 主函数 main() { wait_for_redis_persistence start_my_service } # 执行主函数 main