私は実際にウェブ開発について勉強しています。なぜ多くのWebアプリやチャット(Whatsapp、Telegram、Discordなど、多くのこと!)がキャッシュを使用しているのかを尋ねたところです。つまり、RedisやMemcachedのようなキャッシュシステムを学んだ後、それらを実際に使用する方法を尋ねていました。たとえば、Redisは限られた時間(期限切れになる)だけページ全体をキャッシュできます。または、ログインセッションを保存できます。
しかし、どれほど多くのチャット(ウェブ、デスクトップ、モバイル)アプリがキャッシングを使用していますか?メッセージをキャッシュに保存することは知っていますが、一般的なデータベースだけで十分ではないでしょうか?また、メッセージはどのようにキャッシュで「ソート」されますか?キャッシュを理解するのは難しいようです。
メッセージをキャッシュに保存することは知っていますが、一般的なデータベースだけで十分ではないでしょうか?
したがって、執筆時点では、Whatsappは...15億人を超えるユーザー( https://www.statista.com/topics/2018/whatsapp / は2017年12月の時点で1.5bを示しています)。特定のユーザーが送信するメッセージの数を掛けると、lotのメッセージがあります。そして確かに、データベースをシャーディングして、ユーザーベースの独自のサブセットを持つデータベースをたくさん持つことができます。
ただし、適切な永続ストレージには、いくつかの欠点があります。
キャッシュの方が適しているものもあります。 「ボブが入力しています...」のような一時的なものは、データベースに移動する必要はありません。サービスによってはキャッシュに入れられない場合もありますが、「ボブがこのメッセージを読んだ」というメッセージは、数日以上保持する必要がないことがよくあります。オンラインステータスを保持する必要はありません。連絡先リストは頻繁に変更されないため、おそらくキャッシュに保持されます。
特にチャットアプリでは、recentメッセージへのアクセスが多く、1日以上前に書かれたものはほとんど見られません。頻繁にアクセスされるものは、予想される使用法に従ってキャッシュされ、パフォーマンスに大きなメリットをもたらします。
また、メッセージはどのようにキャッシュで「ソート」されますか?
オフハンドはわかりません。これは、サービスによって多少異なると思います。それぞれのワークフローと実装はわずかに異なります。つまり、特定の問題に対処するために、キャッシュの使用方法が少し異なります。たとえば、slackのようなものはチャネルベースの整理を好むかもしれませんが、1対1アプリは宛先ユーザーごとにメッセージを整理するかもしれません。