Laravel Redis 安裝與基本配置

介紹

Redis 是什麼?

Redis 是一個基於記憶體的 Key-Value 儲存系統,支援持久化。Laravel 中常用來加速 SessionCacheQueue 等功能,提升系統效能。


適用場景

適合使用 Redis 的情境

  • 高流量應用:例如大型會員系統,Redis 可快速讀寫 Session,降低 DB 負載。
  • 分散式架構:多台伺服器透過 Redis 共用 Session,確保一致性。
  • 高併發 API 請求:避免頻繁存取資料庫。
  • 快取機制:Laravel 的 cache() 函式可使用 Redis 作為儲存引擎。

不適合使用 Redis 的情境

  • 小型/低流量應用:可以使用預設的檔案系統或資料庫儲存 Session 即可。
  • 需要強持久性資料保存:若 Redis 未啟用持久化機制,資料可能在重啟後丟失。

安裝 Redis

Ubuntu / Debian

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

# 啟用並啟動 Redis
sudo systemctl enable redis
sudo systemctl start redis

# 測試 Redis 是否正常運作
redis-cli ping  # 若顯示 PONG 表示成功

CentOS / Red Hat

sudo dnf install epel-release
sudo dnf install redis

# 啟用並啟動 Redis
sudo systemctl enable redis
sudo systemctl start redis

# 測試 Redis
redis-cli ping

Windows - Laragon

# 開啟 Laragon 終端機,啟動 Redis
redis-server

# 測試 Redis
redis-cli ping

Redis 常用指令

redis-cli           # 進入互動模式

keys *              # 列出所有 key(注意:正式環境不建議使用)
set key value       # 設定 key 的值
get key             # 取得 key 的值
del key             # 刪除 key
select 1            # 切換到第 1 個資料庫(預設是 0)

Laravel Redis 套件安裝與設定

安裝 Predis 套件(Laravel 官方建議)

composer require predis/predis

設定 config/database.php

'redis' => [

    'client' => env('REDIS_CLIENT', 'predis'),

    'options' => [
        'cluster' => env('REDIS_CLUSTER', 'predis'),
        'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'),
    ],

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

],

Laravel 使用 Redis 操作範例

.env 設定

CACHE_DRIVER=redis
SESSION_DRIVER=redis
REDIS_CLIENT=predis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

基本使用

use Illuminate\Support\Facades\Redis;
use Illuminate\Support\Facades\Cache;

// 設定與取得 Redis 鍵值
Redis::set('name', 'John');
$value = Redis::get('name');  // John

// 使用 Laravel Cache(以秒為單位)
Cache::put('test_key', 'Hello Redis!', 600); // 10 分鐘
$value = Cache::get('test_key');  // Hello Redis!

其他補充

Laravel 支援的 Redis 用戶端

  • Laravel 預設支援:

    • predis/predis(PHP 實作,易於安裝,推薦開發環境)
    • phpredis(C 擴充套件,效能較佳,推薦生產環境)

Laravel 11 預設 Redis 用戶端為 phpredis

如需改用 Predis,記得在 .env 設定:

REDIS_CLIENT=predis

如需參考官方 Redis 設定與用法: