Redis の文字列データ型は最も単純なデータ型ですが、他の Redis データ型を学習するための基礎でもあります。以下に、redis のいくつかのアプリケーションを紹介します。
電流制限
電流制限は、redis を使用して実現できます。 Redis自体のパフォーマンスは非常に高く、ある程度のリクエストには耐えることができます。
大量のトラフィックに対する防御
現在、Web サイト攻撃がますます蔓延しています。静的リソースは CDN で保護できますが、動的リソースを防御する方法は次のとおりです。プログラム。以下に、大量のリクエストを防御するための Redis ソリューションを示します。
基本的な考え方は、一定期間内の IP に対するリクエストの数を制限することです。たとえば、IP に対するリクエストの数は 1 秒あたり 10 回を超えることはできません。
疑似コードは次のとおりです:
function ip_limit($cnt = 10) { $ip = $_SERVER['SERVER_ADDR']; $key = "limit:$ip:cnt"; $isExisit = $redis->set($key, 1, ['nx', 'ex'=>1]); if (!$isExisit || $redis->incr($key) <= $cnt) { // 通过 return true; } else { // 不通过 return false; } }
確認コードの頻度制限を取得
SMS 確認コードは現在、 Web アプリケーション 標準として、多くの場所で SMS 認証コードが必要になります。例: 登録時、パスワード変更時、およびより高度なセキュリティ要件が必要な一部の操作時。もちろん、認証コードの取得は無料ではないため、ユーザーが無制限に認証コードを取得することは望ましくありません。
同じアイデアを使用して、SMS 検証コードを取得する頻度を制限するアプリケーションを作成できます。
1 分以内に 1 回のみ確認コードの取得が許可されているアプリケーションを完了します。疑似コードは次のとおりです:
function code_limit($mobile, $time = 60) { $key = "limit:$mobile:cnt"; $isExisit = $redis->set($key, 1, ['nx', 'ex'=>$time]); if (!$isExisit) { // 通过 return true; } else { // 不通过 return false; } }
セッションを保存
セッションの保存には redis を使用することが現在推奨されており、その利点はパフォーマンスが高く、有効期限が切れたときに自動的にエクスタシーが発生することです。 (PHP 独自のセッション ガベージ コレクション メカニズムは信頼性が低く、エクスタシーが期限切れになる可能性があります)。
この方法は非常に簡単で、php.ini ファイルを変更するだけです。
session.save_handler 行を見つけて、それを
session.save_handler = redis
session.save_path を
session.save_path = "tcp://localhost:6379"
redis のパスワードを設定している場合は、それを ## に変更します。 #
session.save_path = "tcp://localhost:6379?auth=password"
session.save_handler = redis session.save_path = "tcp://192.168.1.220:6379?auth=password"
以上がRedis 文字列型のいくつかのアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。