Redis 01-Redis要点まとめ
Redisの要約
スタンドアロンRedis
なぜRedisが現れたのか
アーキテクチャーデータストアの選択比較Webサイト
: https://db-engines.com/en
https://redis.io
http://www.redis.cn/ ---
Redisインストール
https://redis.io
http://www.redis.cn/ ---
RPC I/Oモデル,BIO,NIO,多重I/O,AIO
キャッシュデータ型
memcache
key,value :value , Redis。 json,
Redis
1. Redis 、 、 、 epoll I/O , client
2. Redis ,
3. Redis value String、List、Hash、Set、Sorted\_set
1) String: 、 、bitmap(1. , 2. ,
)
2) List: , ,List (0,1,2...), (-1,-2,-3...)
3) Hash: key field value
4) Set: , ,
5) Sorted\_set: , , , (skip list)
Redisステップ使用
キャッシュでよくある質問
Redisスタンドアロン持続化
Redisクラスタ
なぜRedisクラスタがあるのか
Redisシングルマシン・シングル・プロセスは、キャッシュとしてもデータベースとしても使用でき、2つの持続化方式RDBとAOFを有する.
シングルマシン、シングルノード、シングルインスタンスの問題:
1.
2.
3.
AKF ,
AKF----X,Y,Z
X :Redis ,
Y : 、 Redis , , ,
Z : 、 , 1~10000 ,20001~30000
X軸データミラーバックアップデータの整合性の問題:
データ同期の3つのアーキテクチャ:
Redisシステムが最も強調しているのは性能であり,それは速いために生まれたので,最後のkafkaのスキームを選択するのではなく,選択した第2のスキームである.
Redisマスターコピーモード
Redisのプライマリ・スタンバイ方式、プライマリ・リード・ライト、自身がまた1つのシングル・ポイントであり、依然としてシングル・ポイント障害の問題が存在し、プライマリ・スタンバイが停止した場合、ライト・データ操作を行うことができず、データの読み取り可能な操作も行うことができる(スタンバイから読み取る)
そのため、主にHAを高可用性で行う必要があり、自動的にフェイルオーバし、「代替者」を選択し、アップグレードを主とする
監視プログラムが主の健康状況を監視する必要があり、誤殺しないことを保証するために、複数の監視プログラムが同時に監視し、主の健康状況に対して投票採決を行う必要がある.そのため、監視プログラムは一般的に奇数個で、半数以上の監視プログラムが主が掛かっていると判断し、新しい主を選出する.
マスターコピー構成アイテム:
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no ----
repl-backlog-size 1mb ----
min-replicas-to-write 3
min-replicas-max-lag 10
Redis高使用Sentine哨兵モード
redis-sentinel
redis-server --sentinel
# ,Redis
port 26379
sentinel monitor mymaster 127.0.0.1 6381 2
|
Redis容量の問題解決
AKF分割原則:X、Y、Z
プライマリスレーブレプリケーションは、プライマリHA、Xの問題を解決することができますが、単一ノードの容量の問題はまだ解決されていません.そのため、データを分割する必要があります.データのカプセル化には4つの方法があります.
以上のシナリオは、データベースではなくRedisをキャッシュとして使用します.
Redisクラスタエージェントスキーム
Redisクラスタエージェントがない場合は、接続コストが高すぎて、各クライアントが各サーバに接続する必要があります.
エージェント層でshardingアルゴリズムを実現し、modula、random、kemata、エージェントproxyの前にLVS+VIPを使用することもでき、クライアントのアクセスを透明にし、keepalivedはLVSの高可用性を保証する.
≪データ・スライスの事前割当てスキーム|Pre Assignment Schemas for Data Block|oem_src≫:データ・スライスをより高速に分割し、実際のノードごとに数ブロック保存します(Redis clusterスキーム).
proxyエージェントスキーム
1. twitter Redis , Github twemproxy ---- (https://github.com/twitter/twemproxy http://www.redis.cn/topics/partitioning.html)
2. predixy Redis , sentinel cluster ---- (https://github.com/joyieldInc/predixy/blob/master/README_CN.md)
3. redis cluster ---- 16384 , , , , sharding, sharding, sharding。 , Key( ) sharding (http://www.redis.cn/topics/cluster-tutorial.html)
Redis面接のよくある質問とAPI
Redis FAQ
ブレークスルー
: KEY , ,
:KEY
:1.get key 2.setnx( ) 3-1.OK, DB 3-2.false sleep ->1
:1. , ?->
2. , ?-> , DB, DB ,
# , redis , Redis AP , CP , AP CP,
突き抜ける
:
: ,
: ( , ), key (
)
雪崩
: KEY
: DB
: KEY , , , ,
RedisAPI
SpringBoot
https://docs.spring.io/spring-boot/docs/2.2.4.RELEASE/reference/html/spring-boot-features.html#boot-features
https://docs.spring.io/spring-data/redis/docs/2.2.4.RELEASE/reference/html/#
Jedis
https://github.com/xetorthio/jedis
Lettuce
https://github.com/lettuce-io/lettuce-core