redis の役割: 1. 最新の n データを取得する; 2. TOP N データを取得する; 3. 正確なラッシュタイムを設定する; 4. カウンタを実装する; 5. 重複する値を削除する; 6. を使用するset スパム対策システムを作成するコマンド; 7. キューシステムを構築します。
時間をかけて Redis データベースを学習した後、多くの友人が混乱しています。彼らは空虚な気分になり、このことを学んだ後に何ができるのかわかりません。その結果、 , 学習を続けるモチベーションを失ってしまったので、誰もが Redis の学習の道を進み続けることができるように、誰もが使える Redis アプリケーション シナリオのシンプルで実践的なガイドを作成する必要があると思います。
1. 最新の n データを取得します
友達によく理解してもらうために、例を挙げて説明します。
例:
现在你在和讯网黄金频道上班,项目经理让你负责每天在频道首页生成一张数据表,来展示1个月内的国际黄金的开盘和收盘价格.如果 我们从mysql数据库中按时间排序取出,固然可以.但是你要考虑和讯网的并发量,和你排序时对资源的一个浪费程度.
このとき、redis のリストアクセスを選択する必要がありますが、redis にはキュー (リスト) データ構造があり、先入れ先出しの特性があることがわかっています。この場合、最新の 1 か月分のデータをすぐに取得できます。lrange コマンドを使用すると、必要な間隔の値を簡単に取得できます。
2. 上位 N 個のデータを取得する
次の例は、タイトルを見ると最初のアプリケーションと似ているように思えますが、実際にはいくつかの違いがあります。アプリケーション 1 では、リストの先入れ先出し機能を使用します。次の例は、順序集合の特性を使用して実際的な問題を解決することです。 Redis の学習プロセスを実行すると、これ以上良いものはありません。必要なのは、各 APP に一意の ID を生成し、それをコレクションのメンバーとして使用し、ダウンロード番号をメンバーのスコアとして使用することだけです。その後、このスコアをサイズ順に並べ替えると、順序付けされたコレクションが自然に形成されます。最終的には、上位 N 個または下位 N 個のデータを取得するのはあなた次第です。
3. Set正確な急ぎ購入時間急ぎ購入とプロモーションの時間を設定します。このテクノロジーは、電子商取引の分野で非常に実用的です。
现在你受雇于APPLESTORE,项目经理要求你在商店首页,展示下载量排行前30的APP.
ねえ、時間は限られているので、ちょうど 1 時間で終了する必要があります。この時点で、redis のプロセスでは、前述のキーの有効期間が役に立ちます。アクティブなキーの有効期限を有効期限の瞬間のタイムスタンプに設定できます。同時実行性は非常に優れています。ユーザーが購入を急いでいる間は高いため、この時点では、送信されたデータをすぐにハードディスク データベースに保存する必要はありません。ユーザーが注文したときに、アクティビティのキーの有効期限が切れているかどうかを取得します。有効期限が切れていない場合、ユーザーは注文を許可され、注文データは一時的にメモリにキャッシュされます。キーの有効期限が切れると、ユーザーは注文を禁止されます。同時に、必要な数の同時注文をインポートできます。ハードディスク データベースに入力しただけです。第一に、正確な時間設定を実現でき、第二に、ラッシュ購入の同時実行性の高さに対処できます。
#4. カウンターを簡単に実装
现在你在阿里的淘宝事业部上班,领队组长分配你来完成一个限时抢购活动,某商品中午10:00开始进行抢购,1小时后,活动结束.
重複した値を削除します。これは聞き覚えのある言葉ですが、私たちの MySQL には一意のインデックスがありません。ああ、私が言いたいのは、 redis の文字列には set コマンドの方が便利です。
你目前就职的单位是中央全面深化改革领导小组技术顾问办公室,在过去如果全国人民一起选代表,既浪费人力又浪费财力.现在网络技术 发展了,习近平组长交代由你牵头开发点赞选人大平台. 接到这个项目,你是不是很犯难,13亿啊!可能同时集中在某个时间段,点赞,如此大的IO请求.硬盘数据库多少有些力不从心.哎,这个时候 你要运用上我们的内存数据库系统了,redis中对key的增incre,减decr不正适合你的需求么.
6. set コマンドを使用してスパム対策システムを作成します
これを見た多くの友人は混乱しました. 設定されたコマンドを破ることで、いつスパムと戦うことができるようになりますか? おい、もっと想像力を働かせるべきです。さらに大きくなる必要があります。
你现在在下厨房平台,任职技术兼策划.你准备收集天下美食,苦于不知菜名.网络是有魔力的,人名群众的智慧是无穷的.你准备发动全 国的网友们,为你提供菜名,同时你还不想让大家发出相同菜名.
7. SUBSCRIBE および PUBLISH コマンドでパブリッシュとサブスクライブを使用して、リアルタイム メッセージ プッシュ システムを構築します
上次你制作的统计菜名系统,领导会上先把你肯定了一番,然后义正言辞地说,小明啊,你这系统不太符合净网行动的要求啊,有些网友把一 些带有明显淫秽色情的菜名都提交到了系统.还被展示出来投票,这不荒唐吗?
8。キューシステムを構築する
忙完微博的事,正准备收拾东西去挤地铁的你.突然被组长叫住了. 小明,你虽然完成了微博关注和推送的技术架构.但是这几天又有个新问题出现了.因为FB用不了,微博用户暴增.特别是认证大V的用户越 来越多,就连门口烤红薯的大爷早上还拽着我说,给他整个大V吧,俺不差钱.老板为了缓解认证方面的压力,已经开始收费认证了,但是还是 挡不住这群XX.赶上过节饭点,大V们几乎同时发微博,推送服务器有点压力.你把这个问题解决了,再走吧,晚点回去打车公司报销.然后打 完卡他走了.
“同时发微博”,”同时推送,服务器压力大”.你从电脑中找到了小胖之前发给你的那本redis自学笔记,笔记上说.我们可以将若干个需要执行的事件加入队列,然后按时间的顺序去逐个逐个的执行.这个时候你又想到了一个提高用户互动性的好办法.我能不能让粉丝数目多的大V的微博优先推送呢?毕竟粉丝基数大,影响大,总能搞出一个大新闻.既然这样,我直接使用有序队列不就行了.把一个个大V的微博推送事件ID存入有序队列,同时依据粉丝数给予权重(或说优先级).不就可以达到我们的需求了么.
9. 缓存
这一点大家应该很熟悉了,它可以像memcache一样充当缓存数据库.不过的它的数据类型比memcache多的多,应对场景自然要比memcache丰富的多.比较时髦的用法是,用其来缓存会话哦.
以上がredisの用途は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。