Cache

Redis

https://zenn.dev/tk42/books/adbf4f87beed12 色々なユースケースを紹介 ちょっと早すぎた

https://docs.aws.amazon.com/ja_jp/elasticache/index.html 以下がお客様の状況に当てはまる場合は、Memcached を選択します。

  • できるだけシンプルなモデルが必要である。
  • 複数のコアまたはスレッドを持つ大きなノードを実行する必要がある。
  • システムでの需要の増減に応じてノードを追加または削除するスケールアウトおよびスケールイン機能が必要である。
  • オブジェクトをキャッシュする必要があります。

Q

  • モデルとは?
  • redis におけるスケールアウトは?
  • オブジェクトとは?

入門

https://redis-documentasion-japanese.readthedocs.io/ja/latest/topics/data-types-intro.html

キーに対して、文字列以外も割となんでも対応づけ可能

  • バイナリセーフな文字、文字のコレクション、集合、Bitarray

キーは「バイナリ・セーフ」 バイナリ列であれば、キーとして扱うことができる

  • 長すぎは良くない。ルックアップでコストがかかる

1.インメモリデータベース - Wikipedia https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9

メインメモリデータベースは内部最適化アルゴリズムが簡素であり、相対的に少ないCPU命令を実行するので、ディスク最適化されたデータベースと比較して高速である。メモリ上でデータアクセスを行うことで、ディスクと比較し、より高速かつ安定したパフォーマンスを提供できる。通信ネットワーク機器など、応答時間が肝要であるアプリケーションにおいて、インメモリデータベースは多用されている。[1]

Redisはキー/バリュー型のデータベースで、独特のデータモデルを提供する。このモデルのユーザーコマンドは、リレーショナルデータベース管理システムのようにクエリを記述しない。操作はデータ型に基づいて実行される。つまり、データを後で素早く取り出せるように、それに適した形で保存しなければならない。

Amazon ElastiCache Redis のクラスターを適切にサイジングする際に考慮すべき 5 つのワークロード特性

https://aws.amazon.com/jp/blogs/news/five-workload-characteristics-to-consider-when-right-sizing-amazon-elasticache-redis-clusters/

TPS ~20000 、データサイズが ~ 100G であれば T3 を推奨。 t3.mediumまでスケールアップ

より大きい場合はM5/R5

  • ENAによるアク超ネットワーキング
  • 600Gを超えるmemory → 25 GBpsの帯域

ElastiCache ノードの要件を決定するときは、以下を考慮してください。

メモリ →

  • データストアのサイズ
  • TTLによる期限切れも考慮
  • キャッシュヒット率 予備または予約済みメモリ
  • ノードサイズの約25 % は予備となるべき
  • スナップショット作成、やレプリケーションで使用

可用性

  • 1プライマリ/2レプリカ + マルチAZ
  • 書き込みが多いプライマリには注意。同期が頻繁に必要
  • レプリカ多すぎても負荷がかかる

スケーリング

  • 垂直水平が可能

データ

Hands

Memcached

Elasticache

memorydb for redis

https://dev.classmethod.jp/articles/aws-release-durable-redis-amazon-memorydb-for-redis/