日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

【laravel7.x中文文档】Redis

發布時間:2023/11/28 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【laravel7.x中文文档】Redis 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Redis

?

簡介

Redis?是一個開源的,高級鍵值對存儲數據庫。由于它包含?字符串,哈希,列表,集合,和?有序集合?這些數據類型,所以它通常被稱為數據結構服務器。

在將 Redis 與 Laravel 一起使用前,我們鼓勵你通過 PECL 安裝并使用?PhpRedis?PHP 擴展。盡管擴展安裝起來更復雜,但對于大量使用 Redis 的應用程序可能會產生更好的性能。

或者,您可以通過 Composer 安裝?predis/predis?包:

composer require predis/predis

注意:Predis 已被該軟件包的原始作者遺棄,并可能在將來的版本中從 Laravel 中刪除。

配置

您的 Laravel 應用的 Redis 配置文件都在?config/database.php?中。在這個文件里,你可以看到一個?redis?數組里包含了應用程序所使用的 Redis 服務器信息:

'redis' => ['client' => env('REDIS_CLIENT', 'phpredis'),'default' => ['host' => env('REDIS_HOST', '127.0.0.1'),'password' => env('REDIS_PASSWORD', null),'port' => env('REDIS_PORT', 6379),'database' => env('REDIS_DB', 0),],'cache' => ['host' => env('REDIS_HOST', '127.0.0.1'),'password' => env('REDIS_PASSWORD', null),'port' => env('REDIS_PORT', 6379),'database' => env('REDIS_CACHE_DB', 1),],],

默認的服務器配置應該足以進行開發。當然,你也可以根據使用的環境來隨意更改這個數組。只需在配置文件中給每個 Redis 服務器指定名稱、host(主機)和 port(端口)即可。

集群配置

如果你的應用使用 Redis 服務器集群,你應該在 Redis 配置文件中使用?clusters?鍵來定義這些集群:

'redis' => ['client' => env('REDIS_CLIENT', 'phpredis'),'clusters' => ['default' => [['host' => env('REDIS_HOST', 'localhost'),'password' => env('REDIS_PASSWORD', null),'port' => env('REDIS_PORT', 6379),'database' => 0,],],],],

默認情況下,集群可以在節點上實現客戶端分片,允許你實現節點池以及創建大量可用內存。這里要注意,客戶端共享不會處理失敗的情況;因此,這個功能主要適用于從另一個主數據庫獲取的緩存數據。如果要使用 Redis 原生集群,需要在配置文件下的?options?鍵中做出如下指定:

'redis' => ['client' => env('REDIS_CLIENT', 'phpredis'),'options' => ['cluster' => env('REDIS_CLUSTER', 'redis'),],'clusters' => [// ...],],

Predis

要使用 Predis 擴展,需要將環境變量從?phpredis?選項修改為?predis

'redis' => ['client' => env('REDIS_CLIENT', 'predis'),// Rest of Redis configuration...
],

除了默認的?host?,?port?,?database?和?password?這些服務配置選項外,Predis 還支持為每個 Redis 服務器定義其它的鏈接參數?connection parameters。如果要使用這些額外的配置選項,可以將以下配置添加到 Redis 服務器的配置文件?config/database.php?中:

'default' => ['host' => env('REDIS_HOST', 'localhost'),'password' => env('REDIS_PASSWORD', null),'port' => env('REDIS_PORT', 6379),'database' => 0,'read_write_timeout' => 60,
],

PhpRedis

要使用 PhpRedis 擴展,需要將配置文件?config/database.php?中 Redis 配置的?REDIS_CLIENT?選項修改為?phpredis

'redis' => ['client' => env('REDIS_CLIENT', 'phpredis'),// 其余 Redis 配置...
],

如果你希望?PhpRedis?擴展和?Redis?Facade 共存,需要在配置文件?config/app.php?的別名配置中修改?Illuminate\Support\Facades\Redis?Facade 別名,如修改為:?RedisManager,以保證不與 Redis 類產生命名沖突。

'RedisManager' => Illuminate\Support\Facades\Redis::class,

除了默認的?host,?port,?database?和?password?這些服務配置選項外,PhpRedis 還支持以下幾個額外的連接參數:?persistent,?prefix,?read_timeout?和?timeout?。你可以將這些配置選項添加到配置文件?config/database.php?中 Redis 服務配置項下:

'default' => ['host' => env('REDIS_HOST', 'localhost'),'password' => env('REDIS_PASSWORD', null),'port' => env('REDIS_PORT', 6379),'database' => 0,'read_timeout' => 60,
],

Redis Facade

為了避免與 Redis PHP 擴展本身發生類名沖突,需要在配置文件?config/app.php?刪除或重命名?Illuminate\Support\Facades\Redis?Facade 別名。通常情況下,建議完全刪除?Redis?facade,在使用 Redis PHP 擴展時,通過完整的類聲明進行引用。

Redis 交互

你可以通過調用?Redis?facade?上的各種方法來與 Redis 交互。Redis?facade 支持動態方法,意味著你可以在 facade 上調用各種?Redis 命令?,命令將直接傳遞給 Redis。在示例中,將通過?Redis?facade 上的?get?方法來調用?Redis?上的?GET?命令:

<?phpnamespace App\Http\Controllers;use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Redis;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?facade 上調用任意 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('my-connection');

管道命令

當你需要在一個操作中給服務器發送很多命令時,推薦你使用管道命令。?pipeline?方法接受一個 Redis 實例的?閉包?。你可以將所有的命令發送給 Redis 實例,它們都會在一個操作中執行完成:

Redis::pipeline(function ($pipe) {for ($i = 0; $i < 1000; $i++) {$pipe->set("key:$i", $i);}
});

發布與訂閱

Laravel 為 Redis 的?publish?及?subscribe?提供了方便的接口。這些 Redis 命令讓你可以監聽指定「頻道」上的消息。你可以從另一個應用程序發布消息給另一個應用程序,甚至使用其它編程語言,讓應用程序和進程之間能夠輕松進行通信。

首先,我們使用?subscribe?方法設置頻道監聽器。我們將這個方法調用放在?Artisan 命令中,因為調用?subscribe?方法會啟動一個長時間運行的進程:

<?phpnamespace App\Console\Commands;use Illuminate\Console\Command;
use Illuminate\Support\Facades\Redis;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?名稱將作為第二個參數傳遞給提供的回調?閉包

Redis::psubscribe(['*'], function ($message, $channel) {echo $message;
});Redis::psubscribe(['users.*'], function ($message, $channel) {echo $message;
});

總結

以上是生活随笔為你收集整理的【laravel7.x中文文档】Redis的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。