2020/07/22 : 雑談会議 (52)
鈴木 孝明
C# における Redis 徹底活用
- 始めよう、爆速 Web サービス作り -
Name
鈴木 孝明 a.k.a @xin9le
Work
Application Engineer
Award
Microsoft MVP
for Developer Technologies
Web Site
https://xin9le.net
About
まずは雰囲気から
What’s Redis
https://redis.io/
インメモリ型の Key-Value ストア
Schema Less / Extreme Fast / Atomic Operation
Message Broker
Pub/Sub 型の通知
Streams という Apache Kafka 風味なメッセージ処理/通知
ひと言で説明すると
Redis が落ちたらどうなる?
知らんのか?データが消える
消えちゃ困るあなたのために
設定を入れることで全件 / 追記型を選択しつつ永続化可能
個人的には「揮発しても構わないデータを扱う」のを推奨
(永続化するとパフォーマンスが低下する / 爆速というメリットを最大限活かしたいので)
(基本的に) 揮発性データストア
耐障害性の向上
一部のノードで障害が発生しても稼働し続けられる
https://qiita.com/rhi222/items/cdea6e0593cfe5efb819
データの分散保持
データは自動的にシャーディングされる
アクセス数が多い場合、各ノードへの負荷軽減になる
クラスタリング
各クラウドのマネージドサービス
今の時代は黙ってこれを使えば OK
課金すれば容量 / 通信帯域 / クラスタ化などをカスタマイズ可能
どうしても個別に立てたい人は
Linux で apt install するなりして Daemon を作る
Microsoft から Windows 向け porting も出てるけど、古いので注意
Redis の利用準備
データ型 備考
String 最もプリミティブ / バイナリセーフ
List いわゆる双方向リスト
Hash いわゆる辞書
Set 数学的に言うところの集合
SortedSet データの並び替えが行われている集合
Bit いわゆるフラグ管理
Geo 緯度経度を管理 / 2 点間距離の計算 / 近傍検索
HyperLogLog 集合内の異なる要素の数を高速に推定
扱えるデータ型
よくあるパターンを紹介
Redis の使いどころ
シンプルなデータストア
Redis Cache
WebApps
Cache-Aside パターン (取得)
Redis Cache
WebApps
SQL Database
1. キャッシュを取得
2. キャッシュが無ければ
本物のデータを取得
3. 取得したデータを
キャッシュに詰める
Cache-Aside パターン (保存)
Redis Cache
WebApps
SQL Database
2. キャッシュを削除
1. データを永続化層に保存
Pub/Sub 型の通信
Redis Cache
WebApps
Redis CLI / StackExchange.Redis / CloudStructures
Demo
Enjoy high performance programming using Redis!!
Thank you

C# における Redis 徹底活用