<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Amazon Elasticache on K-Life Hack | システムアーキテクチャ &amp; DevOps</title><link>https://klifehack.com/tags/amazon-elasticache/</link><description>Recent content in Amazon Elasticache on K-Life Hack | システムアーキテクチャ &amp; DevOps</description><generator>Hugo -- gohugo.io</generator><language>ja</language><lastBuildDate>Sun, 13 Sep 2026 10:07:55 +0900</lastBuildDate><atom:link href="https://klifehack.com/tags/amazon-elasticache/index.xml" rel="self" type="application/rss+xml"/><item><title>Amazon ElastiCache設計検証：RedisとMemcachedの選定基準とキャッシュ戦略</title><link>https://klifehack.com/p/elasticache-redis-memcached-architecture-notes/</link><pubDate>Sun, 13 Sep 2026 10:07:55 +0900</pubDate><guid>https://klifehack.com/p/elasticache-redis-memcached-architecture-notes/</guid><description>&lt;p&gt;データベース層のI/Oボトルネックやクエリスパイクの緩和において、インメモリキャッシュの導入は不可欠な設計パターンです。ディスクベースのRDBMS（Amazon RDSやAmazon Auroraなど）ではレスポンスタイムがミリ秒単位（10ms〜100ms超）を要するのに対し、インメモリ層（RAM）にホットデータを配置することでマイクロ秒からサブミリ秒（μs〜1ms）単位のデータフェッチが可能になります。本稿では、フルマネージド型インメモリデータストアであるAmazon ElastiCacheのアーキテクチャ特性、キャッシュパターンの選択基準、RedisおよびMemcachedエンジンの技術的差異と運用検証ポイントをまとめます。&lt;/p&gt;&#10;&lt;h2 id="キャッシュ戦略とアクセスパターン"&gt;キャッシュ戦略とアクセスパターン&#10;&lt;/h2&gt;&lt;p&gt;ElastiCacheはデータベースの透過的プロキシではないため、アプリケーション層で明示的なキャッシュ制御ロジックを実装する必要があります。&lt;/p&gt;&#10;&lt;h3 id="1-lazy-loading-cache-aside"&gt;1. Lazy Loading (Cache-Aside)&#10;&lt;/h3&gt;&lt;p&gt;アプリケーションがキャッシュを最初に参照し、データが存在しない場合（Cache Miss）にのみプライマリデータベースへフォールバックしてキャッシュへ書き戻すパターンです。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;b&gt;メリット&lt;/b&gt;: 実際にアクセスされたデータのみがメモリに格納されるため、リソース消費効率が高い設計となります。キャッシュノード障害時もDBフェイルオーバーにより継続稼働が可能です。&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;デメリット&lt;/b&gt;: キャッシュミス発生時に「App → Cache → DB → Cache → Client」という複数のラウンドトリップが発生し、初期レイテンシが増大します。また、DB直接更新時に古いデータ（Stale Data）が残留するリスクがあります。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="2-write-through"&gt;2. Write-Through&#10;&lt;/h3&gt;&lt;p&gt;データベースへのデータ書き込みと同時に、キャッシュ層に対しても同一トランザクション内で書き込みまたは更新を行うパターンです。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;b&gt;メリット&lt;/b&gt;: キャッシュ内のデータ鮮度が常に保証され、古いデータの読み取りリスクを排除できます。&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;デメリット&lt;/b&gt;: 書き込み処理ごとにDBとキャッシュの2箇所へ書き込むため、レイテンシが増大します。また、参照されないデータもキャッシュを占有し、メモリ資源の枯渇（Churn）を招く恐れがあります。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="3-ttl-time-to-live-expiration-policy"&gt;3. TTL (Time To Live) Expiration Policy&#10;&lt;/h3&gt;&lt;p&gt;Lazy Loadingと併用してTTL（有効期限）を設定することで、メモリ効率を維持しながらデータ鮮度の上限を制御します。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# キー &amp;#39;user:123&amp;#39; に対し、有効期限300秒（5分）を指定してデータを格納&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SET user:123 &lt;span style="color:#e6db74"&gt;&amp;#34;session_payload&amp;#34;&lt;/span&gt; EX &lt;span style="color:#ae81ff"&gt;300&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="redisとmemcachedのエンジン比較"&gt;RedisとMemcachedのエンジン比較&#10;&lt;/h2&gt;&lt;p&gt;要件に応じて適切なエンジンを選択する必要があります。高可用性や永続性、高度なデータ構造が必要な場合はRedis、シンプルなマルチスレッド処理によるキー・バリューストアが必要な場合はMemcachedを採用します。&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;比較項目&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;ElastiCache for Redis&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;ElastiCache for Memcached&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;b&gt;データ構造&lt;/b&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;String, List, Set, Sorted Set, Hash, Bitmap, Geo等&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;単純なKey-Value（String / Blob）のみ&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;b&gt;レプリケーション&lt;/b&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;プライマリ・レプリカ構成（最大5ノード/シャード）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;なし（各ノードが独立）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;b&gt;可用性構成&lt;/b&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Multi-AZ with Auto-Failover&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;なし（ノード障害＝キャッシュミス）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;b&gt;データ永続化&lt;/b&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;AOFログ / RDBスナップショット（S3連携）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;非対応（揮発性メモリのみ）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;b&gt;スレッドモデル&lt;/b&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;シングルスレッド（コアイベントループ）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;マルチスレッド（マルチコアCPUを活用可能）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;b&gt;クラスタリング&lt;/b&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;クラスターモード（最大500シャード）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;クライアント側コンシステントハッシュによる分散&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;b&gt;認証方式&lt;/b&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Redis AUTH / AWS IAM認証（Redis 7.0以降）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;SASL認証&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="セキュリティとネットワーク設計"&gt;セキュリティとネットワーク設計&#10;&lt;/h2&gt;&lt;p&gt;ElastiCacheはVPC内のプライベートサブネットに配置し、パブリックルーティングを遮断した構成が基本となります。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;b&gt;ネットワーク分離&lt;/b&gt;: セキュリティグループのインバウンドルールにて、認可されたアプリケーション層（EC2/ECS/Lambda）のセキュリティグループからのみ各ポート（Redis: &lt;code&gt;6379&lt;/code&gt;, Memcached: &lt;code&gt;11211&lt;/code&gt;）への通信を許可します。&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;暗号化&lt;/b&gt;:&lt;/li&gt;&#10;&lt;li&gt;保管時暗号化: AWS KMS（Key Management Service）管理のCMKを用いたAES-256暗号化を適用します。&lt;/li&gt;&#10;&lt;li&gt;転送時暗号化: TLS/SSLによるクライアントおよびノード間通信の暗号化を有効化します。&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;認証認可&lt;/b&gt;: IAMポリシーはコントロールプレーンAPI（クラスター作成・変更等）の制御を行い、データプレーンへのアクセスはRedis AUTHまたはIAM認証（Redis 7.0+）にて制御します。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# redis-cliを用いたTLS接続およびAUTHトークン認証の実行例&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli -h my-redis-cluster.xxxxxx.clustercfg.use1.cache.amazonaws.com -p &lt;span style="color:#ae81ff"&gt;6379&lt;/span&gt; --tls -a &lt;span style="color:#e6db74"&gt;&amp;#34;YourSecureAuthToken&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="分散セッションストレージの実装構成"&gt;分散セッションストレージの実装構成&#10;&lt;/h2&gt;&lt;p&gt;ステートレスなWeb層を実現するため、ユーザーセッションをEC2ローカルからElastiCache for Redisへ外出しします。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+-------------------------------------------------------------------------+&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| [Client] -&amp;amp;gt; [ALB] -&amp;amp;gt; [EC2 Web Tier (Stateless Autoscaling Group)] |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| +--&amp;amp;gt; [ElastiCache Redis Multi-AZ Cluster] |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| (Shared Session Store) |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+-------------------------------------------------------------------------+&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;この設計により、特定EC2ノードへのスティッキーセッション（セッションアフィニティ）が不要となり、Auto Scalingによるノードの追加・削除時にもセッション切断が発生しません。&lt;/p&gt;&#10;&lt;h2 id="典型的なユースケースとコマンド例"&gt;典型的なユースケースとコマンド例&#10;&lt;/h2&gt;&lt;h3 id="1-リアルタイムランキングredis-sorted-sets"&gt;1. リアルタイムランキング（Redis Sorted Sets）&#10;&lt;/h3&gt;&lt;p&gt;Relational Databaseでの高負荷な&lt;code&gt;ORDER BY&lt;/code&gt;クエリを排除し、インメモリでランキング集計を実行します。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# スコアの更新・追加 (O(log(N)))&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ZADD leaderboard &lt;span style="color:#ae81ff"&gt;1200&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;user_01&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ZADD leaderboard &lt;span style="color:#ae81ff"&gt;1850&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;user_02&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ZADD leaderboard &lt;span style="color:#ae81ff"&gt;1500&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;user_03&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 上位3名のスコアとユーザーを取得&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ZREVRANGE leaderboard &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; WITHSCORES&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-イベント通知ファンアウトredis-pubsub"&gt;2. イベント通知・ファンアウト（Redis Pub/Sub）&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# サブスクライバー側&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SUBSCRIBE channel:notifications&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# パブリッシャー側&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;PUBLISH channel:notifications &lt;span style="color:#e6db74"&gt;&amp;#34;payload_update_event&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="troubleshooting"&gt;Troubleshooting&#10;&lt;/h2&gt;&lt;h3 id="1-セキュリティグループおよびvpcルーティング起因の接続タイムアウト"&gt;1. セキュリティグループおよびVPCルーティング起因の接続タイムアウト&#10;&lt;/h3&gt;&lt;p&gt;ElastiCacheクラスタへの接続試行時に&lt;code&gt;Connection timed out&lt;/code&gt;が発生する場合、VPCサブネットのルーティングテーブル、またはセキュリティグループのIngress設定を確認する必要があります。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nc -zvw3 test-redis.xxxxxx.use1.cache.amazonaws.com 6379&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nc: connect to test-redis.xxxxxx.use1.cache.amazonaws.com port 6379 (tcp) failed: Connection timed out&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;b&gt;解決手順&lt;/b&gt;:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;接続元クライアントとElastiCacheが同一VPC内、または適切にピアリング/Transit Gatewayで接続されたサブネットにあるか確認します。&lt;/li&gt;&#10;&lt;li&gt;ElastiCacheにアタッチされたセキュリティグループのインバウンドルールに、接続元のCIDRまたはセキュリティグループIDからのTCP &lt;code&gt;6379&lt;/code&gt;（Memcachedの場合は&lt;code&gt;11211&lt;/code&gt;）が許可されているか検証します。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="2-クラスターモード有効時のmovedリダイレクトエラー"&gt;2. クラスターモード有効時のMOVEDリダイレクトエラー&#10;&lt;/h3&gt;&lt;p&gt;Cluster Mode EnabledのRedisクラスターに対して、クラスター非対応クライアントやスタンドアロン用の接続設定でクエリを実行すると&lt;code&gt;MOVED&lt;/code&gt;エラーが返却されます。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ redis-cli -h test-cluster.xxxxxx.clustercfg.use1.cache.amazonaws.com -p 6379&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;127.0.0.1:6379&amp;amp;gt; GET user:data:999&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(error) MOVED 12450 10.0.2.45:6379&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;b&gt;解決手順&lt;/b&gt;:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;CLI接続時は&lt;code&gt;-c&lt;/code&gt;（クラスターモード）フラグを付与してリダイレクトを自動追従させます。&lt;/li&gt;&#10;&lt;li&gt;アプリケーションのクライアントライブラリ側でクラスター接続用ドライバ（Cluster Configuration Endpointの指定）を有効化します。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli -c -h test-cluster.xxxxxx.clustercfg.use1.cache.amazonaws.com -p &lt;span style="color:#ae81ff"&gt;6379&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3-メモリ枯渇とoomコマンド拒絶"&gt;3. メモリ枯渇とOOMコマンド拒絶&#10;&lt;/h3&gt;&lt;p&gt;書き込み頻度に対してメモリ上限（&lt;code&gt;maxmemory&lt;/code&gt;）に達し、適切なエビクションポリシーが設定されていない場合、書き込みコマンドが拒絶されます。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(error) OOM command not allowed when used memory &amp;amp;gt; &amp;#39;maxmemory&amp;#39;.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;b&gt;解決手順&lt;/b&gt;:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;パラメータグループの&lt;code&gt;maxmemory-policy&lt;/code&gt;を確認し、要件に応じて&lt;code&gt;volatile-lru&lt;/code&gt;や&lt;code&gt;allkeys-lru&lt;/code&gt;へ変更します。&lt;/li&gt;&#10;&lt;li&gt;キャッシュキーへのTTL付与漏れがないかコードレベルで監査を実施します。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="運用検証ログ"&gt;運用検証ログ&#10;&lt;/h2&gt;&lt;p&gt;Redisノードへの接続疎通およびレプリケーションステータス確認のログ例です。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ redis-cli -h my-redis-rep-group.xxxxxx.use1.cache.amazonaws.com -p 6379 --tls -a &amp;#34;****************&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my-redis-rep-group:6379&amp;amp;gt; INFO replication&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# Replication&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;role:master&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;connected_slaves:2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;slave0:ip=10.0.1.12,port=6379,state=online,offset=1849204,lag=0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;slave1:ip=10.0.2.88,port=6379,state=online,offset=1849204,lag=1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;master_replid:a1b2c3d4e5f60718293a4b5c6d7e8f9012345678&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;master_replid2:0000000000000000000000000000000000000000&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;master_repl_offset:1849204&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my-redis-rep-group:6379&amp;amp;gt; PING&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;PONG&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="operational-notes"&gt;Operational Notes&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;b&gt;エンジン選定&lt;/b&gt;: 単純なオブジェクトキャッシュと高いスレッド並行処理性能のみを求める場合はMemcached、レプリケーション、フェイルオーバー、永続化、データ構造を活用する場合はRedisを選択します。&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;キャッシュ無効化設計&lt;/b&gt;: キャッシュ更新漏れによる不整合を防ぐため、Lazy Loadingの採用時は必ずTTLを併用し、不整合期間の最大値をシステム要件内に収める必要があります。&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;フェイルオーバー耐性&lt;/b&gt;: 本番環境のRedisではMulti-AZを有効化し、プライマリ障害時にも自動フェイルオーバーによってダウンタイムを最小化する構成を維持します。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item></channel></rss>