リピート - RDBを
RDBとは何ですか
RDBの後、データは、スナップショットのハードディスクにメモリ内のRedisます作成、(バイナリ)RDBファイルと呼ばれます
Redisのを再起動するには、あなたのハードディスク上のRDBファイルをロードすると、データ回復のためのメモリにロードされました。
RDBのトリガモード - 主に3つの方法
- (同期)を保存
- bgsave(非同期)
- オートマチック
保存1.(同期)
次のように実装プロセスは以下のとおりです。
- 他のコマンドが待機をブロックする一方で節約
- 古いRDBファイルが存在する場合、それは一時ファイルを作成し、古いファイルを置き換えます
- 時間計算量はO(N)
redis> save
OK
2. bgsave(非同期)
次のように実装プロセスは以下のとおりです。
- bgsaveを呼び出した後、Linuxは子プロセスを作成するために、フォーク()関数を呼び出します
- 古いRDBファイルが存在する場合、それは一時ファイルを作成し、古いファイルを置き換えます
- 時間計算量はO(N)
- サブプロセス名:Redisの-RDB-bgsave
redis> bgsave
BAckground saving started
自動RDBの動作を構成することにより3
- 内部等価bgsave
- Redisのデフォルト設定を保存しました
コンフィギュレーション | 第2 | 変更 |
---|---|---|
保存する | 900 | 1 |
保存する | 300 | 10 |
保存する | 60 | 10000 |
上記の条件のいずれかが作成されます(bgsave)RDBファイル(バイナリ)を満たします。
例えば60秒10,000データの変更、自動的に生成されたファイルをRDB内。
デメリット
書かれた言葉RDBの大量があまりにも頻繁に、頻繁にたくさんのためのハード、ハードの負担に書き込ま生成した場合貧しい制御は、RDBファイルを生成しました。
RDBの設定
構成アイテム | デフォルト値 | 意味 |
---|---|---|
dbfilename | dump.rdb | RDBスナップショットファイル名 |
君 | ./ | スナップショットファイルが生成されたRDBディレクトリ |
ストップ・書き込み・オン・bgsaveエラー | はい | エラー時に停止の書き込みを発生したかどうかbgsave |
rdbcompression | はい | RDBファイルが圧縮されます |
rdbchecksum | はい | RDBかどうかを確認します |
RDB最高のコンフィギュレーション
- 自動運転はRDBに配置されていません
- dbfilenameダンプ - $ {ポート} .RDB
- DIR / redisDataPath
- ストップ・書き込み・オン・bgsaveエラーはい
- はいrdbcompression
- はいrdbchecksum
トリガー機構は無視することはできません
- 主从复制时机的全量复制,master 节点会执行 bgsave
- debug reload
- shutdown
- flushDB 、 flushAll
演示
这里重新写一个 redis-server 的启动配置文件,命名为 redis-6379.conf
,放到 /opt/soft/redis/config/
目录下,修改内容如下,其他配置保持默认不变。
daemonize yes
pidfile /var/run/redis-6379.pid
port 6379
logfile "6379.log"
# save 900 1
# save 300 10
# save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump-6379.rdb
dir /opt/soft/redis/data
启动 redis 服务:
redis-server /opt/soft/redis/config/redis-6379.conf
启动客户端:
redis-cli
执行:
可以看到,在 /opt/soft/redis/data/
目录下,生成了 RDB文件。
现在我们演示一下自动生成 RDB 文件操作,修改 redis-6379.conf 文件,配置自动 RDB 操作:
save 60 5
然后重启 redis 服务,启动 redis 客户端,执行:
打印日志尾部信息,可以看到在 60 s 内发生了 5 次改变,所以生成了 RDB 文件。
总结
- RDB 是 redis 内存到硬盘的快照,用于持久化。
- save 通常会阻塞 redis。
- bgsave 不会阻塞 redis,但是会 fork 新进程。
- save 自动配置满足任一就会被执行。
- 有些触发机制不容忽视。