ホームページ > バックエンド開発 > PHPチュートリアル > [ Laravel 5.2 ドキュメント ] サービス -- Redis

[ Laravel 5.2 ドキュメント ] サービス -- Redis

WBOY
リリース: 2016-06-20 12:37:49
オリジナル
1024 人が閲覧しました

1. はじめに

Redis は、文字データをサポートするため、データ構造サーバーとしてよく使用されるオープンソースの高度なキー値ストレージ システムです。文字列、ハッシュ、リスト、セット、順序付きセットなどの構造。 Laravel で Redis を使用する前に、Composer を通じて predis/predis パッケージ (~1.0) をインストールする必要があります。

構成

アプリケーションの Redis 構成は、構成ファイル config/database.php にあります。このファイルでは、アプリケーションで使用される Redis サーバーを含む Redis 配列を確認できます。

'redis' => [    'cluster' => false,    'default' => [        'host'     => '127.0.0.1',        'port'     => 6379,        'database' => 0,    ],],
ログイン後にコピー

デフォルトのサーバー構成は開発ニーズを満たすことができますが、環境に基づいて配列を自由に変更できます。各 Redis サーバーに名前を付け、Redis サーバーが使用するホストとインターフェイスを指定するだけです。

クラスター オプションは、Laravel Redis クライアントに、複数の Redis ノード間でクライアント側シャーディングを実行するように指示します。これにより、ノード プールが形成され、大量の有効な RAM が作成されます。ただし、クライアント側シャーディングはフェイルオーバーを処理しないため、別のプライマリ データ ストアから有効なキャッシュ データをフェッチするのに適しています。

さらに、Redis 接続定義でオプション配列値を定義して、Predis クライアント オプションの範囲を指定できるようにします。

Redis サーバーが認証情報を必要とする場合は、Redis サーバー構成配列にパスワード構成項目を追加することでパスワードを提供できます。

注: PECL を介して PHP の Redis 拡張機能をインストールする場合は、config/app.php ファイル内の Redis エイリアスを変更する必要があります。

2. 基本的な使用法

ファサードは動的メソッドをサポートしているため、任意の Redis コマンドを使用して Redis と対話できます。この例では、Redis ファサードで get メソッドを呼び出すことで、Redis で GET コマンドを呼び出します。

<?phpnamespace App\Http\Controllers;use Redis;use App\Http\Controllers\Controller;class UserController extends Controller{    /**     * 显示指定用户属性     *     * @param  int  $id     * @return Response     */    public function showProfile($id)    {        $user = Redis::get('user:profile:'.$id);        return view('user.profile', ['user' => $user]);    }}
ログイン後にコピー

もちろん、前述したように、任意の Redis コマンドを呼び出すことができます。 Redis のファサードにあります。 Laravel はマジック メソッドを使用して Redis サーバーにコマンドを渡すため、次のようにパラメーターと Redis コマンドを渡すだけです:

Redis::set('name', 'Taylor');$values = Redis::lrange('names', 5, 10);
ログイン後にコピー

さらに、コマンド メソッドを使用してコマンドをサーバーに渡すこともできます。最初のパラメータとしてコマンド名、2 番目のパラメータとしてパラメータ値配列:

$values = Redis::command('lrange', ['name', 5, 10]);
ログイン後にコピー

複数の Redis 接続を使用する

Redis::connection メソッドを呼び出すことで Redis インスタンスを取得できます:

$redis = Redis::connection();
ログイン後にコピー

これにより、デフォルトの Redis サーバー インスタンスが取得されます。サーバー クラスターを使用していない場合は、サーバー名を接続メソッドに渡して、指定された Redis 構成で定義された指定されたサーバーを取得できます。 >

$redis = Redis::connection('other');
ログイン後にコピー
パイプ コマンド

パイプライン メソッドは、1 つの操作で複数のコマンドをサーバーに送信する必要がある場合に使用する必要があります。パイプライン メソッドは、Redis インスタンスを受け取るクロージャというパラメーターを受け取ります。すべての Redis コマンドをこの Redis インスタンスに送信すると、これらのコマンドが 1 回の操作で実行されます:

Redis::pipeline(function ($pipe) {    for ($i = 0; $i < 1000; $i++) {        $pipe->set("key:$i", $i);    }});
ログイン後にコピー

3. Publish/Subscribe

Redis It Redis のパブリッシュおよびサブスクライブ コマンドを呼び出すためのインターフェイスも提供します。これらの Redis コマンドを使用すると、特定の「チャネル」でメッセージをリッスンでき、別のアプリケーションから、または他のプログラミング言語を使用してこのチャネルにメッセージをパブリッシュできるため、異なるアプリケーション/プロセス間で簡単に通信できるようになります。

まず、subscribe メソッドを使用して、Redis 経由でチャネルにリスナーを設定しましょう。 submit メソッドを呼び出すと常駐プロセスが開始されるため、Artisan コマンドでこのメソッドを呼び出します:

<?phpnamespace App\Console\Commands;use Redis;use Illuminate\Console\Command;class RedisSubscribe extends Command{    /**     * 控制台命令名称     *     * @var string     */    protected $signature = 'redis:subscribe';    /**     * 控制台命令描述     *     * @var string     */    protected $description = 'Subscribe to a Redis channel';    /**     * 执行控制台命令     *     * @return mixed     */    public function handle()    {        Redis::subscribe(['test-channel'], function($message) {            echo $message;        });    }}
ログイン後にコピー
ここで、publish を使用してメッセージをチャネルに公開できます:

Route::get('publish', function () {    // 路由逻辑...    Redis::publish('test-channel', json_encode(['foo' => 'bar']));});
ログイン後にコピー
ワイルドカード サブスクリプション

psubscribe メソッドを使用すると、ワイルドカードで定義されたチャネルにサブスクライブできます。これは、対応するすべてのチャネル上のすべてのメッセージを取得する場合に便利です。 $channel 名は、指定されたコールバック クロージャの 2 番目のパラメータとして渡されます:

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