質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

0回答

296閲覧

Redisでアクセスランキングを作りたい

iphonesukisuki

総合スコア12

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2019/09/24 10:10

Redisで記事のアクセスランキングを作りました。日間・週間・月間でランキングが見れるものにしました。
初めて作るのでノウハウがわかりません。どうかアクセスランキングのノウハウを教えていただければ幸いです。

今回は次のようなシステムを作りました。

  • RedisのSorted-setを使用
  • keyにYYYYmmddの形式で日付、menberに記事のID、scoreに閲覧回数をそれぞれ格納
  • 記事にアクセスがあるたびにscoreをインクリメント
  • 週間・月間ランキングのリクエスト:まずzrevrangebyscoreでweekly・monthlyキーを作る。zrevrangebyscoreで記事のIDリストを得る。IDリストをMariaDBに照合して記事の詳細を格納した記事リストを返す。
  • 日間ランキングのリクエスト:日付のキーでzrevrangebyscoreして記事のIDリストを得る。MariaDBに照合して記事の詳細を格納したリストを返す。

以上のようなシステムを作りました。

ここで疑問なのが、週間・月間ランキングのリクエストがあるたびにzunionstoreやzrevrangebyscoreをしてMariaDBから記事の詳細を得ていくようなシステムはあまり良くないでしょうか?

やはり、バッチ処理で定期的にRedisからデータをMariaDBに移し、それを表示用に使ったほうがよいでしょうか?

他にいいアイデアがあればぜひ教えて下さい!

よろしくお願いいたします。

使用した技術:

  • Redis
  • MariaDB
  • PHP
  • Laravel

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nandymak

2019/09/25 00:45

>Redisで記事のアクセスランキングを作りました。日間・週間・月間でランキングが見れるものにしました。 アプリケーションは完成しているのですね? そのうえでアプリケーションを改善したいという質問でしょうか? >システムはあまり良くないでしょうか? 何が良くないと思ったのでしょうか? 解決したい課題があっての質問なのですか? 課題を教えてください。
iphonesukisuki

2019/09/25 03:53

アプリはテスト段階ですが、完成に近い状態です。課題は、実際にユーザーに利用してもらう際に実用に耐えうるのか不安なところです。 今のシステムであまり良くないと思っているところは、月間・週間ランキングへのリクエストがあるたびにZUNIONSTOREで和集合を作り、ZREVRANGEBYSCOREでランキングを得てDBから記事のデータを引っ張ってくるところです。これではやや計算量がかかりすぎてしまうのではと考えています。 そこで、一般的にはどのように構築するのが良いのか知りたいです。 よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問