現在、MySqlを使用してセッションを保存しています。うまく動作しますが、少し遅いです。
私はRedisの使用を求められましたが、Redisが書き込み操作を遅らせると聞いたので、それが良いアイデアかどうか疑問に思っています。セッションはリアルタイムである必要があるため、少し心配です。
誰かがそのような問題を経験しましたか?
現在、MySqlを使用してセッションを保存しています。うまく動作しますが、少し遅いです。
私はRedisの使用を求められましたが、Redisが書き込み操作を遅らせると聞いたので、それが良いアイデアかどうか疑問に思っています。セッションはリアルタイムである必要があるため、少し心配です。
誰かがそのような問題を経験しましたか?
回答:
Redisはセッションの保存に最適です。すべての操作はメモリ内で実行されるため、読み取りと書き込みは高速になります。
2番目の側面は、セッション状態の永続化です。Redisは、セッション状態をハードディスクに保持する方法に多くの柔軟性を与えます。あなたはhttp://redis.io/topics/persistenceを通過することができます詳細については、を参照してください。ただし、に、ここにオプションがあります-
appendfsync always
は、構成ファイルで設定します。これにより、Redisは書き込み操作がディスクに保存されることを保証します。欠点は、書き込み操作が遅くなることです。appendfsync everysec
。これにより、妥当なデータが保証され、優れたパフォーマンスが得られます基本的には、利用可能な2つの主なタイプがあります。非同期スナップとfsync()
です。それらはそれぞれRDBおよびAOFと呼ばれます。公式ページの永続化モードの詳細。
デーモン化されたプロセスのシグナル処理は、たとえばSIGTERMを受信したときにディスクと同期するため、再起動後もデータはそのまま残ります。デフォルト設定(RDBスナップショット)でも、整合性が損なわれる前にデーモンまたはOSがクラッシュする必要があると思います。
AOF設定は、サーバーが受信したコマンドをログに記録する追加のみのファイルを使用し、コールドスタート時に保存されたファイルからDBを最初から再作成します。デフォルトのディスク同期ポリシーは毎秒1回(IIRC)フラッシュすることですが、すべてのコマンドでロックして書き込むように設定できます。
スナップショットと増分ログの両方を使用すると、より安全ですがコストのかかる増分ログを使用して、長期的に気にしないでください。Redisはデフォルトでクラスタリングをサポートしているため、レプリケーションも実行できるようです。
私はデフォルトのRDB設定を使用しており、スナップショットをリモートFTPに保存しています。データ損失の原因となる障害はまだ見ていません。急性のハードウェア障害または停電が発生する可能性が最も高いですが、私はVPSでホストされています。それが起こる可能性はわずかです:)
この質問は本当にリアルタイムセッションに関するもので、一部には「遅延書き込み操作」というフレーズの誤解が原因で発生したようです。詳細は最終的にコメントで教えられましたが、私はそれを非常に明確にしたかっただけです。 ..
リアルタイムセッションの実装に問題はありません。
Redisは、オプションのディスクへの永続性を備えたメモリ内の Key-Valueストアです。「遅延書き込み操作」とは、メモリ内に存在するデータベースではなく、ディスクへの書き込みを指します。キーと値のペアを設定すると、すぐに(つまり、リアルタイムで)GETできます。永続性に関して選択するポリシー(書き込みを遅らせる量)によって、クラッシュで失われる可能性のあるデータ量の上限が決まります。