2017-07-27 12 views
0

限られた時間(最大24時間)のデータを保存する必要があります。私はthis-限られた時間だけデータを保存してください:memcache vs mysql

  1. ためMemcacheのをmemcacheのとMySQLの両方を使用することができます。有効期限とmemcacheの中にキーを設定します。これは永続的ではありませんが、私はそれを使用することができます。データへのアクセスが高速になります。

  2. MySql:このデータを格納するテーブルを作成し、有効期限が切れた後にアーカイブを保持するジョブを維持します。それは比較的遅くなります。

どちらを使用すればよいですか?これはmemcacheの有効な用途ですか? (memcacheは非常に頻繁にアクセスされるデータを格納するために使用されるため)

このタイプの一時データを保存するための他のオプションがあるかどうかをご確認ください。

+0

今日は何か新しいことがあります - Redis – EvgenyKolyakov

+0

どのような種類のデータですか?あなたはプログラムの実行中または後にのみ使用しますか? .... –

+0

現在のシナリオは次のとおりです。ユーザーが電子商取引のWebサイトにアクセスして製品をクリックすると、そのユーザーに電子メールが送信されます。私たちは次の24時間は彼に再度電子メールを送信しませんが、24時間後に再びクリックすると、電子メールでその旨を送信します。だから、私は電子メールが特定のユーザーに送信されたかどうか、この一時的なデータを保存し、電子メールを送信する前にチェックすることを考えています。これは24時間だけ有効で、それ以降はリセットされます。 – ctor

答えて

1

memcacheはあなたのケースではあまり信頼できないと思います。 Memcacheはキャッシュであり、キャッシュが満杯になるとキャッシュがオブジェクトを退去させ、オブジェクトが削除されたことを知ることができません。オブジェクトが存在しない場合は、追い出しのためにそこに存在しないのか、実際にそこに置かなかったのかを確かめることはできません。

memcacheを頻繁に使用しており、memcacheの使用率が約75%(memcacheがいっぱいであることを意味します)の場合は、memcacheを使用しないことをお勧めします。非常に高い確率と同様に、データは使用されなくなると速やかに追い出されます。これでも問題がなければ、memcacheを使うことができます。

このデータをmysqlに保存することができます。それは良い選択です。

もう1つの方法は、mongodbまたはttl(存続可能時間)のオプションを取得できる他のデータベースです。利点は、あなたがttlの前に退去がなかったことを確かめることができるということです。

+0

私が言ったように、データは永続的である必要はありません。もしそれが追い出されたり、今までに置かれなかったりすると、私はそれを期限切れにし、それに問題はない。問題は - アクセスされないかもしれないそのようなデータのためにmemcacheを使うのはいいですか? mongodbについて - 私たちは今のところそれを使用していません。これらの一時的なデータ要件に使用し始めるか、mysqlを使い続けることをお勧めしますか? – ctor

+1

memcacheを頻繁に使用しており、memcacheの使用率が約75%(つまり、memcacheがいっぱいであることを意味します)の場合は、memcacheを使用しないことをお勧めします。非常に高い確率と同様に、データは使用されなくなると速やかに追い出されます。これでも問題がなければ、memcacheを使うことができます。 これが唯一の要件であれば、新しいスタックを学習する必要があるので、mongodbを使用しないことをお勧めします。ちょうどmysqlに行ってください。毎日望ましくない行を削除するジョブを実行して、データが増加し続けることがないようにします。 – pratikvasa

+0

この利用部分を回答してください。 – ctor

関連する問題