获取Redis的dump文件
如果不介意有多少古老的数据,根据redis.conf配置的频率来更新dump.rdb文件,然后执行Redis的BGSAVE命令,等待LASTSAVE被更新,这样dump.rdb就会变成最新的状态。
- https://gist.github.com/nekoruri/6238957
#!/bin/bash
# RedisのBGSAVEコマンドを実行し、redis.rdbが更新されるのを待つ。
# タイムアウト時間を超えたら exit status 1 で終了する。
TIMEOUT=30
# Timeout handler
# http://stackoverflow.com/questions/1226094/how-to-include-a-timer-in-bash-scripting
set_timer() {
trap handle_timer ALRM
(sleep $TIMEOUT; kill -ALRM $$)&
timer_pid=$!
}
unset_timer() {
kill $timer_pid
trap - ALRM
}
handle_timer() {
exit 1
}
export PATH=/bin:/usr/bin
set_timer
# 丁度この瞬間に組込のBGSAVEが走る可能性があるので、
# BGSAVEの前にLASTSAVEを取得
LASTSAVE=`redis-cli LASTSAVE`
redis-cli BGSAVE
# LASTSAVEが変わるまで待つ。
while [ $LASTSAVE == `redis-cli LASTSAVE` ]; do
sleep 1
done
unset_timer
只需要自由选择 /var/lib/redis/dump.rdb(或其他位置)就可以了。