簡介
Redis 是一個開源的,進階鍵值對存儲資料庫。由于它包含 字元串 , 哈希 , 清單 , 集合 , 和 有序集合 這些資料類型,是以它通常被稱為資料結構伺服器。
在使用 Laravel 的 Redis 之前,你需要通過 Composer 安裝 predis/predis 擴充包:
composer require predis/predisCopy
或者,你也可以通過 PECL 安裝 PhpRedis PHP 擴充。這個擴充安裝起來比較複雜,但對于大量使用 Redis 的應用程式來說可能會産生更好的性能。
配置
Laravel 應用的 Redis 配置都在配置檔案 config/database.php 中。在這個檔案裡,你可以看到 redis 數組裡包含了應用程式使用的 Redis 伺服器資訊:
'redis' => [
'client' => 'predis',
'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' => 'predis',
'clusters' => [
'default' => [
[
'host' => env('REDIS_HOST', 'localhost'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
],
],
],
預設情況下,叢集可以在節點上實作用戶端分片,允許你實作節點池以及建立大量可用記憶體。這裡要注意,用戶端共享不會處理失敗的情況;是以,這個功能主要适用于從另一個主資料庫擷取的緩存資料。如果要使用 Redis 原生叢集,需要在配置檔案下的 options 鍵中做出如下指定:
'redis' => [
'client' => 'predis',
'options' => [
'cluster' => 'redis',
],
'clusters' => [
// ...
],
],
Predis
除了預設的 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 配置的 client 選項修改為 phpredis:
'redis' => [
'client' => 'phpredis',
// 其餘的Redis配置...
],
除了預設的 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,
],
以上内容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那裡入手去提升,對此我整理了一些資料,包括但不限于:分布式架構、高可擴充、高性能、高并發、伺服器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點進階進階幹貨需要的可以免費分享給大家,需要的可以加入我的PHP技術交流群 953224940
進階PHP月薪30k>>>架構師成長路線【視訊、面試文檔免費擷取】