Redis 文字列型のいくつかのアプリケーション

齐天大圣
リリース: 2020-05-11 13:06:39
オリジナル
1386 人が閲覧しました

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, [&#39;nx&#39;, &#39;ex&#39;=>$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"
ログイン後にコピー

スタンドアロン アプリケーションではなく分散アプリケーションの場合、Redis を使用してセッションを一元管理するにはどうすればよいですか?

も非常にシンプルです。 php.ini ファイルを変更するだけです。セッションがマシン 192.168.1.220 で集中管理されている場合、他のマシンの php.ini ファイルは次のように変更されます:

session.save_handler = redis
session.save_path = "tcp://192.168.1.220:6379?auth=password"
ログイン後にコピー
上記では、一部の Redis 文字列タイプのアプリケーションのみが紹介されています。開発者は、実用的なプロジェクトとそのプロジェクトを組み合わせることができます。自分自身の想像力を活用して、さらに多くのアプリケーションを作成してください


以上がRedis 文字列型のいくつかのアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート