RedisとDynamoDBの違い
忘年会的な集まりの時に最近DynamoDBを使っているという話をしたら、Redisと何が違うのかと聞かれてとっさに答えられなかったので改めて少し勉強し直し。
Redisはかなり前にセッションストアと軽いレコメンデーションの実装くらいにしか使ったことなかったので詳細をすっかり忘れていたんです(言い訳)
RedisはインメモリのKVSで高速だが基本的にはキャッシュ。
ディスクにデータを保存する永続化オプションも持つがデータの完全性は担保されない(不意のプロセス死亡などで容易に欠損が発生する)
ランキングやレコメンデーションの実装に便利な機能を持つ。
AWSのElastiCacheでフルマネージドなRedisを使える。
AWSのDynamoDBはフルマネージドのKVSストレージ。
読み書きが高速。
レプリケーションやシャーディングが自動で行われるためスケーラブル。
集計は苦手(単純なカウントでも全件スキャンを行うためかなり低速でリソースを食う)
実際に利用する際には適当に選ぶと制限事項などで要件の達成が困難だったり障害をもたらすことがあるため、採用前にドキュメントはしっかり読んでおくのが吉。
参考
Memcached, MongoDB, Redis, DynamoDB 簡易比較
Redisの永続化の制限
巨大なデータを扱う場合のRedisの運用戦略
Redisデータ永続化の種類とサービス稼動時の切り替え注意点
Amazon DynamoDB
Amazon ElastiCache