ActiveRecordで1:Nの関係を扱うとき、ある親レコードに対して子レコードが幾つ存在するかという情報を、都度計算するのではなくキャッシュしておきたいケースは多いと思います。代表的な実装方法として、ActiveRecordのcounter cacheの機能を利用し、親レコード内にキャッシュを保存しておくという方法があります。 今回は、この情報を親レコード内ではなく揮発性のキャッシュに保存させるために、volatile_counter_cacheというGemをつくりました。memcachedやredisなどのKVSにキャッシュを保存することを想定しています。 方針 以下のような方針に基づいたキャッシュ戦略を想定しています。 RDB上には正規化された一次データだけ保存する 非正規化された二次データはRedis等のKVSに保存する 二次データは揮発しても良いようにする 概観 端的に言うと、
