Memcacheまたはデータベースストアが最適です。どちらの場合も、サイトの規模が拡大するにつれて、多くのサーバーがセッションデータを取得/設定できるようになります。
私は過去に両方を使用しましたが、知っておくべきことがいくつかあります。
1)どちらも任意のデータを保存できます
Railsセッションはハッシュのように扱われ、保存される値はそのハッシュのシリアル化されたバージョンです。Memcacheでは、キー=>値のペアはsession_id=>session_contentsです。データベースストアには、ID用とコンテンツ用の2つの列があります。
2)Memcacheは少し高速です
少しでもスピードが出ます。この目的のために、Memcacheはデータベースよりも高速になります。
3)Memcacheは、いっぱいになるとキーをドロップする傾向があります
Memcacheインスタンスがメモリ不足になり始めると、キーのドロップを開始します。それは最も古いものを最初に落とすことによってそれをします。セッションは積極的に使用されているため、リクエストごとにセッションデータをくすぐることで、これを軽減できます。それはそれらを山の頂上に保ちます。ただし、インスタンスが実際にいっぱいになると、セッションをフロアにドロップしてユーザーをログアウトし始める可能性があります。これは通常、スラッシュドット効果が発生した場合など、非常に急速に成長している状況でのみ問題になります。それ以外の場合は、Memcacheサーバーを監視し、ストレージが不足していないことを確認するのは簡単です。
4)データベーステーブルは期限切れのセッションで急速にいっぱいになりますMemcacheは自動的に古いものを削除します。ユーザーがログアウトせず、単にセッションを中止した場合は、データベースで手動でクリーンアップを実行する必要があります。通常、これは毎日のcronジョブで行うのが最適です。そうでない場合は、そのテーブルへのクエリを遅くする何億もの古いレコードになってしまいます。
どちらがあなたに最適ですか?知らない。それはあなたの状況とあなたが引き受けようとしているリスクの種類に依存します。memcacheでセッションのドロップの問題が発生したことはありませんが、それは実際にはmemcacheを使用している他の目的によって異なります。頻繁に使用する場合は、セッション専用の2番目のmemcacheインスタンスが最適な方法かもしれません。そうすれば、それらを落とすリスクはありません。