<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 服務 —— Redis ## 1、簡介 [Redis](http://redis.io/)是一個開源的、高級的鍵值對存儲系統,經常被用作數據結構服務器,因為其支持[字符串](http://redis.io/topics/data-types#strings)、[Hash](http://redis.io/topics/data-types#hashes)、[列表](http://redis.io/topics/data-types#lists)、[集合](http://redis.io/topics/data-types#sets)和[有序集合](http://redis.io/topics/data-types#sorted-sets)等數據結構。在Laravel中使用Redis/predis`包(~1.0)。 ### 1.1?配置 應用的Redis配置位于配置文件`config/database.php`。在這個文件中,可以看到包含被應用使用的Redis服務器的`redis`數組: ~~~ 'redis' => [ 'cluster' => false, 'default' => [ 'host' => '127.0.0.1', 'port' => 6379, 'database' => 0, ], ], ~~~ 默認服務器配置可以滿足開發需要,然而,你可以基于環境隨意修改該數組,只需要給每個Redis服務器一個名字并指定該Redis服務器使用的主機和接口。 `cluster`選項告訴Laravel Redis 客戶端在多個Redis節點間執行客戶端分片,從而形成節點池并創建大量有效的RAM。然而,客戶端分片并不處理故障轉移,所以,非常適合從另一個主數據存儲那里獲取有效的緩存數據。 此外,你可以在Redis連接定義中定義options數組值,從而允許你指定一系列Predis[客戶端選項](https://github.com/nrk/predis/wiki/Client-Options)。 如果Redis服務器要求認證信息,你可以通過添加`password`配置項到Redis服務器配置數組來提供密碼。 > 注意:如果你通過PECL安裝PHP的Redis擴展,需要在?`config/app.php`?文件中修改Redis的別名。 ## 2、基本使用 你可以通過調用`Redis`[門面](http://laravelacademy.org/post/97.html)上的多個方法來與Redis進行交互,該門面支持動態方法,所以你可以任何[Redis命令](http://redis.io/commands),該命令將會直接傳遞給Redis,在本例中,我們通過調用`Redis`門面上的`get`方法來調用Redis上的GET命令: ~~~ <?php namespace 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); ~~~ 此外還可以使用`command`方法傳遞命令到服務器,該方法接收命令名作為第一個參數,參數值數組作為第二個參數: ~~~ $values = Redis::command('lrange', ['name', 5, 10]); ~~~ **使用多個Redis連接 你可以通過調用`Redis::connection`方法獲取Redis實例: ~~~ $redis = Redis::connection(); ~~~ 這將會獲取默認Redis服務器實例,如果你沒有使用服務器集群,可以傳遞服務器名到`connection`方法來獲取指定Redis配置中定義的指定服務器: ~~~ $redis = Redis::connection('other'); ~~~ ### 2.1?管道命令 當你需要在一次操作中發送多個命令到服務器的時候應該使用管道,`pipeline`方法接收一個參數:接收Redis實例的閉包。你可以將所有Redis命令發送到這個Redis實例,然后這些命令會在一次操作中被執行: ~~~ Redis::pipeline(function ($pipe) { for ($i = 0; $i < 1000; $i++) { $pipe->set("key:$i", $i); } }); ~~~ ## 3、發布 Redis還提供了調用Redis的`publish`和`subscribe`命令的接口。這些Redis命令允許你在給定“頻道”監聽消息,你可以從另外一個應用發布消息到這個頻道,甚至使用其它編程語言,從而允許你在不同的應用/進程之間輕松通信。 首先,讓我們使用`subscribe`方法通過Redis在一個頻道上設置監聽器。由于調用`subscribe`方法會開啟一個常駐進程,我們將在[Artisan命令](http://laravelacademy.org/post/170.html)中調用該方法: ~~~ <?php namespace 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'])); }); ~~~ ### 3.1?通配符訂閱 使用`psubscribe`方法,你可以訂閱到一個通配符定義的頻道,這在所有相應頻道上獲取所有消息時很有用。`$channel`名將會作為第二個參數傳遞給提供的回調閉包: ~~~ Redis::psubscribe(['*'], function($message, $channel) { echo $message; }); Redis::psubscribe(['users.*'], function($message, $channel) { echo $message; }); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看