获取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(或其他位置)就可以了。

广告
将在 10 秒后关闭
bannerAds