Redisの学習(四) - 永続的な方法でRDB / AOFとRedisの総務の2種類

なぜ存続?
Redisの場合ばかりのRedisがダウンしている場合は、メモリにキャッシュして再起動データを、すべての失われたああのメモリ上のデータの内部。あなたは永続化のために、ディスクファイルに、メモリへの非同期ゆっくり書き込みデータを、データの書き込み中に永続化メカニズムは、Redisの使用する必要があります。

A、Redisの永続化技術


1.1、Redisの持続性の2つの方法の

  • A RDB(デフォルト):これは、定期的なデータに対して実行される持続性のRedis
  • AOF:各ライト・コマンドのログなど、追加専用モードでログファイルに書き込まれ、Redisのは再起動し、バックログの書き込み命令を再生することにより、データセット全体を再構築することもAOF

RDBまたはAOFは、その後、あなたがそのようなアリクラウドや他のクラウドサービスなど、他の場所にデータをバックアップすることができ、上記のディスクに永続化するRedisのメモリデータとすることができます。Redisのは、データの前にハングアップした場合、バッククラウドサービスからコピーすることができます。
あなたはRDBとAOF永続化機構の2種類を使用した場合のRedisが再起動したときので、そう、AOFは、データを再構築するために使用される  データAOFがより完全です


1.2永続的な方法の利点と欠点(差分)の両方


(1)RDBの長所と短所:
長所:

       複数のデータファイルを生成するRDB、各データファイルは、データファイルの複数の方法、Redisの中の特定の瞬間を表すデータであるために非常に適したコールドスタンバイの RDBはRedisのほとんど影響(に読み書きサービス、高い読み出し性能)とすることができますRedisのは、高いパフォーマンスを維持しましょう。AOFに対する迅速な復旧;
欠点:

        、RDBデータ・スナップショット・ファイルは5分ごとに一度生成されている以上、AOFは1秒でデータを失い、よりAOFよりも、RDBの子プロセスが生成されたデータファイルのたびにスナップショットをフォークする際の可能な大量のデータサービスクライアントの一時停止につながる
:(2)AOFの長所と短所
長所:
(1)優れたプロテクトデータは、失われた1秒のデータまで失われていないと、
追加専用モードで書かれた(2)、何のディスクは、オーバーヘッドのアドレッシングません、高性能書き込み、および割れない簡単なファイルの修復を、
圧縮時のログを書き換えます命令は、作成するので(3)ログファイルが大きすぎる場合にも、楽屋書き換え動作を表示され、それが(読み書きクライアントには影響しません最小は、新しいログファイルを作成するときに、ログファイルが新しい交換の後にいつものように記述されている古いログファイルは、その後、あなたが)古いものと新しいログファイルを交換することができます準備ができている、データを復元する必要があるからログアウトし;
(4)記録は、高度に読み取り可能な方法で行われ、誤って削除したの壊滅的な緊急回収に適し
短所:

      同じデータ、AOFログファイルは通常、RDBのデータのスナップショットファイルよりも大きいされ、AOFが開いた後、書き込みQPS(毎秒のクエリ)を担保低を書くよりも、RDB QPSをサポートすることができ、複雑な操作をより受けやすいBUG
**


1.3、RDB、(好ましくは2つ付き)AOFを選択する方法、および


それはあなたが大量のデータを失う原因となるので、(1)だけで、RDBを使用していない。
二つの問題があることがあるため(2)ただ、AOFを使用しないでください:まず、あなたはAOFでコールドスタンバイを行い、RDBは風邪を行うために用意して来ませんでした迅速な復旧;二、RDBのデータは、各シンプルで原油のスナップショットを生成するためには、より強固な、バグがこの複雑なバックアップとリカバリのメカニズムAOF回避することができ、
Redisのは、永続的な方法の同時にオープン2種類を開くための(3)のサポート、私たちがすることができますAOFとしてRDBの永続性メカニズムの2種類の統合を使用、  そのデータが失われないことを確認するためにAOFデータ回復のための最初の選択肢として、;と  RDBコールドスタンバイの異なる度合いを行うには、AOFの文書で使用できないとき、紛失または破損している、また、 RDBは、高速なデータ回復のために使用することができます。

 

1.4、RDBとAOPの設定

(1)RDBは、デフォルトで有効になって次のように、redis.confの特定の構成パラメータは、次のとおりです。

#dbfilename:持久化数据存储在本地的文件
dbfilename dump.rdb
#dir:持久化数据存储在本地的路径,如果是在/redis/redis-3.0.6/src下启动的redis-cli,则数据会存储在当前src目录下
dir ./
##snapshot触发的时机,save    
##如下为900秒后,至少有一个变更操作,才会snapshot  
##对于此值的设置,需要谨慎,评估系统的变更操作密集程度  
##可以通过“save “””来关闭snapshot功能  
#save时间,以下分别表示更改了1个key时间隔900s进行持久化存储;更改了10个key300s进行存储;更改10000个key60s进行存储。
save 900 1
save 300 10
save 60 10000
##当snapshot时出现错误无法继续时,是否阻塞客户端“变更操作”,“错误”可能因为磁盘已满/磁盘故障/OS级别异常等  
stop-writes-on-bgsave-error yes  
##是否启用rdb文件压缩,默认为“yes”,压缩往往意味着“额外的cpu消耗”,同时也意味这较小的文件尺寸以及较短的网络传输时间  
rdbcompression yes  

(2)AOFデフォルトではオフに、道を開き、構成ファイルreds.confを変更します。appendonlyはい:

ログの運用形態でのリアルタイム記録は、効率が高くありませんが、それは全体的なパフォーマンス(しかし、より安全に)影響します

##此选项为aof功能的开关,默认为“no”,可以通过“yes”来开启aof功能  
##只有在“yes”下,aof重写/文件同步等特性才会生效  
appendonly yes  

##指定aof文件名称  
appendfilename appendonly.aof  

##指定aof操作中文件同步策略,有三个合法值:always everysec no,默认为everysec  
appendfsync everysec  
##在aof-rewrite期间,appendfsync是否暂缓文件同步,"no"表示“不暂缓”,“yes”表示“暂缓”,默认为“no”  
no-appendfsync-on-rewrite no  

##aof文件rewrite触发的最小文件尺寸(mb,gb),只有大于此aof文件大于此尺寸是才会触发rewrite,默认“64mb”,建议“512mb”  
auto-aof-rewrite-min-size 64mb  

##相对于“上一次”rewrite,本次rewrite触发时aof文件应该增长的百分比。  
##每一次rewrite之后,redis都会记录下此时“新aof”文件的大小(例如A),那么当aof文件增长到A*(1 + p)之后  
##触发下一次rewrite,每一次aof记录的添加,都会检测当前aof文件的尺寸。  
auto-aof-rewrite-percentage 100  

 

二、Redisの業務

Redisのとデータベースの同期は、動作原理のACIDトランザクションを記述する必要があります

 

 

2.1、導入Redisの総務

Redisのトランザクションは一度、および二つの重要な保証で複数のコマンドを実行することができます。

(1)トランザクションは、単一の分離操作です。

すべてのコマンドは順次実行トランザクションをシリアライズされます。トランザクションの実行中に、コマンドが中断され、他のクライアントの要求に送信されません。

(2)トランザクションがアトミック操作です。

トランザクション内のコマンドは、いずれかのすべての実行またはすべてを実行されません。

2.2、Redisのトランザクションセットの例

チーム、執行部に開始transactionコマンド:トランザクションを実行するためのスタートから3つの段階を通過します

例: MULTIへの最初のトランザクションにチームに複数のコマンド、その後、トランザクションを開始し、トランザクションが一緒にトランザクション内のすべてのコマンドで、最後のEXECコマンドによってトリガーされます。

redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED
redis 127.0.0.1:6379> GET book-name
QUEUED
redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED
redis 127.0.0.1:6379> SMEMBERS tag
QUEUED

redis 127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"
   2) "C++"
   3) "Programming"(⊙o⊙)…

2.3、SpringBoot操作Redisの総務

public void setString(String key, Object object) {
        // 开启事务权限
		stringRedisTemplate.setEnableTransactionSupport(true);
		// 开启事务begin
		stringRedisTemplate.multi();
		try {
			// 如果是String 类型
			String value = (String) object;
			stringRedisTemplate.opsForValue().set(key, value);
		} catch (Exception e) {
			// 回滚事务
			stringRedisTemplate.discard();
		} finally {
			// 提交事务
			stringRedisTemplate.exec();
		}
	}

 

 

 

 

 

 

 

 

公開された52元の記事 ウォンの賞賛116 ・は 50000 +を見て

おすすめ

転載: blog.csdn.net/RuiKe1400360107/article/details/103655830