Redisでデータを定期的にファイル(RDBスナップショット)に保存するには、/etc/redis/redis.conf の save ディレクティブを設定します。
タスクキュー用途であれば、デフォルトの設定でも自動保存が有効になっていますが、環境に合わせて明示的にチューニングする方法を解説します。
データのバックアップ
1. 設定ファイルの編集
/etc/redis/redis.conf を開き、save で始まる行を確認・変更します。
# 「〇秒以内に〇回以上データが変更されたら保存する」という条件を指定します
save 900 1 # 15分以内に1回以上変更があれば保存
save 300 10 # 5分以内に10回以上変更があれば保存
save 60 10000 # 1分以内に10,000回以上変更があれば保存
非力なマシンでディスクへの書き込み負荷を減らしたい場合や、逆にタスクのロストを防ぐために頻繁に保存したい場合は、この数値を調整します(例:頻繁に保存させたいなら save 60 1 など)。
また、保存されるファイル名と保存先ディレクトリもここで指定されています(通常はそのままで問題ありません)。
dbfilename dump.rdb
dir /var/lib/redis
2. 設定の反映
設定ファイルを保存したら、Redisを再起動して変更を適用します。
sudo systemctl restart redis-server
3. 手動での即時保存(動作確認)
設定が正しく機能するか、手動でスナップショットファイルを作成(保存)させます。
仮想環境やCLIからRedisに接続し、SAVE コマンドを実行します。
redis-cli save
OK が返れば成功です。
/var/lib/redis/dump.rdb ファイルが生成・更新されていることを確認します。
ls -lh /var/lib/redis/dump.rdb
このスナップショット(dump.rdb)があるおかげで、万が一サーバーが再起動やクラッシュを起こしても、Redis再起動時にキューの中身が自動的に復元されます。
データのリストア
dump.rdb によるリストア手順
Redisのスナップショットファイル(dump.rdb)からの復元は、対象のファイルを正しいディレクトリに配置し、Redisサービスを再起動するだけで自動的に読み込まれます。
1. Redisサービスの停止
リストア作業中にデータが上書きされたり競合するのを防ぐため、まずはRedisを停止します。
sudo systemctl stop redis-server
2. dump.rdbファイルの配置
バックアップとして保存しておいた dump.rdb ファイルを、Redisのデータディレクトリ(通常は /var/lib/redis)に配置します。
# 例: /tmp/dump.rdb にバックアップがある場合
sudo cp /tmp/dump.rdb /var/lib/redis/dump.rdb
3. ファイルの所有権と権限の確認
Redisは通常 redis ユーザーとして実行されるため、ファイル所有者が異なると読み込めません。所有権を正しく設定します。
sudo chown redis:redis /var/lib/redis/dump.rdb
sudo chmod 660 /var/lib/redis/dump.rdb
4. Redisサービスの起動
Redisを起動すると、起動時に自動的に dump.rdb が読み込まれ、データが復元されます。
sudo systemctl start redis-server
5. 復元されたことの確認
redis-cli を使って、キューやデータが正しく復元されているかをチェックします。
redis-cli
# 接続後、キーの一覧やデータ数を確認
KEYS *
DBSIZE
exit

コメント