ホームページ >バックエンド開発 >PHPチュートリアル >laravelがRedisを使用してWebサイトのキャッシュを読み取る方法

laravelがRedisを使用してWebサイトのキャッシュを読み取る方法

小云云
小云云オリジナル
2018-03-30 10:20:402104ブラウズ

Redis は完全にオープンソースで無料で、BSD プロトコルに準拠しており、高性能のキーと値のデータベースです。 Redis およびその他のキー値キャッシュ製品には、次の 3 つの特徴があります。 Redis はデータ永続性をサポートしています。これにより、データをディスク上のメモリに保持し、再起動時に再ロードして使用できます。

Redis は、単純なキーと値の型のデータをサポートするだけでなく、リスト、セット、zset、ハッシュなどのデータ構造のストレージも提供します。

Redis はデータ バックアップ、つまりマスター/スレーブ モードでのデータ バックアップをサポートしています。

Redis の利点

  • 非常に高いパフォーマンス – Redis は 110,000 回/秒の速度で読み取り、81,000 回/秒の速度で書き込みます。

  • 豊富なデータ型 – Redis は、バイナリの場合の文字列、リスト、ハッシュ、セット、順序付きセットのデータ型操作をサポートします。

  • アトミック - Redis のすべての操作はアトミックであり、Redis は複数の操作をマージした後のアトミック実行もサポートしています。

  • 豊富な機能 – Redis は、パブリッシュ/サブスクライブ、通知、キーの有効期限などの機能もサポートしています。

redis のインストール方法

1. Ubuntu (Homestead 環境を使用しており、仮想マシンが Ubuntu であるため、この方法のみを使用してインストールしました。Windows の場合は、次のリンクにアクセスしてください) http://www.redis .net.cn/tutor または http://www.jb51.net/article/84071.htm... )

公式の Ubuntu インストール方法


$sudo apt-get update
$sudo apt-get install redis-server

私の Web サイトではlaravel フレームワークをインストールするには、composer メソッドを使用する必要があります


composer require predis/predis

Lumen マイクロフレームワークをインストールする場合は、illuminate/redis (5.2.*) もインストールする必要があります


composer require illuminate/redis (5.2.*)

設定

lumenをインストールすると


//需要在bootstrap/app.php里面加入此段代码
$app->register(Illuminate\Redis\RedisServiceProvider::class);
$app->configure('database');

Redisをメインデータベースとして使用できるため、LaravelのRedisの設定情報はconfig/database.phpにあります:


'redis' => [
'cluster' => false,
'default' => [
 'host' => '127.0.0.1',
 'port' => 6379,
 'database' => 0,
],
],

クラスターオプションは、ここではローカルです。テストするノードは 1 つだけなので、false に設定します。

デフォルトのオプションは、デフォルトの Redis ホスト接続を示します。ここで、Redis と Web サーバーは同じホストを共有するため、ホストは 127.0.0.1 で、デフォルトの Redis ポートは 6379 です。

さらに、デフォルトのオプションでは、(必要に応じて) より多くの接続パラメータもサポートされています:

パラメータ

意味

デフォルト値
ホスト サーバーIPアドレス/ホスト名 127.0.0.1
ポート Redisサーバーのリスニングポート番号 6379
パスワード サーバーが認証パスワードを必要とする場合 パスワードを使用しないでください

データベース

選択済み接続時データベースインデックス

インデックスが設定されていません

タイムアウト

Redisサーバーへの接続タイムアウト 5秒
read_write_timeout ネットワーク接続を介した読み取りおよび書き込み操作のタイムアウト

システムのデフォルト(タイムアウトに制限がない場合は、-1 に設定します)


read_write_timeout | ネットワーク接続を介した読み取りおよび書き込み操作のタイムアウト | システムのデフォルト (タイムアウトに制限がない場合は、 -1)

さらに、Redis をキャッシュ ツールとして使用する場合は、config/cache.php で redis オプションを設定する必要もあります:


'redis' => [

'driver' => 'redis',
'connection' => 'default',
],

ここでの接続は、redis のデフォルト ホストのデフォルト設定に対応します。設定/データベース内。

上記の構成が完了したら、アプリケーション コードでデータ アクセスに Redis を使用できるようになります。

例を見てみましょう—Laravel の mysql は Redis とペアになっています

私の考えでは、読み取るときに、まずキャッシュ内を検索して、見つかったらラッキーです。見つからない場合は、データベース内で検索してキャッシュに転送します。


 if (Cache::has($key)){    //首先查寻cache如果找到
  $values = Cache::get($>key); //直接读取cache
  return $values;
 }else{         //如果cache里面没有  
  $values = DB::select($sql);
  Cache::put($key,$value,$time);
  return $values;
 }

しかし、laravelのキャッシュにはremember関数も提供されています


 $values = Cache::remember($key,$time,function () {
   return DB::select($this->sql);
  });

キャッシュが直接読み込んで返す場合、キャッシュ項目がキャッシュに存在しない場合はrememberメソッドに返されるクロージャが実行され、そしてクロージャの結果はキャッシュに保存されます。

関連する推奨事項:

PHP Web サイトのキャッシュ コード共有

以上がlaravelがRedisを使用してWebサイトのキャッシュを読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。