類別:後端套件
| 發布於 2025-06-25 20:15
Laravel Redis / Memcached
內存管理系統
Redis 說明
Redis 是一個高效能、開源的記憶體資料儲存系統,適合用作快取、資料庫、消息佇列等。其特點如下:
-
內存資料庫
所有資料儲存在記憶體中,因此讀寫速度極快。但資料量受限於可用記憶體大小。
-
持久性支援
Redis 支援 RDB(快照)、AOF(追加記錄)等方式,可選擇性儲存到磁碟以保留資料。
-
多種資料結構
支援字串、列表(List)、集合(Set)、有序集合(Sorted Set)、哈希(Hash)等。
-
發布 / 訂閱模式(Pub/Sub)
適用於即時訊息推送與事件通知。
-
事務支援
使用 MULTI/EXEC 指令組成原子性事務。
-
快取機制
可用作資料庫查詢快取,顯著減少資料庫壓力。
-
高可用性
支援主從複製(Replication)、哨兵(Sentinel)、叢集(Cluster)等模式。
-
常見用途
網站快取、即時聊天、排行榜、限流、會話儲存、訊息佇列等。
Redis 使用範例
1. 配置 Redis 連線
.env 設定檔:
設定 Laravel 使用 Redis 作為快取驅動:
2. 使用 Redis 快取
3. 使用 Redis 原生命令(via
Facade)
常見 Redis 命令:
SET key value EX seconds:儲存並設定過期時間
GET key:取得值
INCR key:值加一(可作為計數器)
EXPIRE key seconds:設定過期秒數
Memcached 說明
Memcached 是輕量級、分布式的記憶體快取系統,適合快取簡單資料以提高效能。
-
快速的記憶體快取
所有資料儲存在記憶體中,不涉及磁碟操作。
-
支援分布式
可在多台伺服器上擴展並實現高可用。
-
簡單鍵值結構
僅支援字串類型的鍵值資料。
-
自動過期
支援設定 TTL,自動刪除過期快取。
-
快取替換策略
預設使用 LRU(最近最少使用)策略。
-
多語言支援
PHP、Python、Java、C# 等皆有支援。
-
無持久化機制
重啟後資料會全部清空,僅用於快取層。
Memcached 使用範例
1. 安裝 Laravel 快取套件(若非
Laravel 專案)
2. 設定 Memcached 快取
.env 設定:
在 config/cache.php 中確認:
3. 使用快取範例
Redis vs Memcached 比較
| 功能 / 特性 |
Redis |
Memcached |
| 支援資料類型 |
多種(字串、列表、集合…) |
單一字串類型 |
| 持久性支援 |
支援 RDB / AOF 持久化 |
不支援 |
| 發布 / 訂閱 |
支援 |
不支援 |
| 分布式支援 |
支援 Cluster |
需手動管理多節點 |
| 記憶體效率 |
相對高(但使用量也高) |
較低記憶體消耗 |
| 配置複雜度 |
高 |
低 |
| 適合場景 |
多功能應用、需持久性資料 |
純快取應用、簡單查詢快取 |
建議使用時機
Laravel Redis / Memcached 內存管理系統
Redis 說明
Redis 是一個高效能、開源的記憶體資料儲存系統,適合用作快取、資料庫、消息佇列等。其特點如下:
內存資料庫
所有資料儲存在記憶體中,因此讀寫速度極快。但資料量受限於可用記憶體大小。
持久性支援
Redis 支援 RDB(快照)、AOF(追加記錄)等方式,可選擇性儲存到磁碟以保留資料。
多種資料結構
支援字串、列表(List)、集合(Set)、有序集合(Sorted Set)、哈希(Hash)等。
發布 / 訂閱模式(Pub/Sub)
適用於即時訊息推送與事件通知。
事務支援
使用
MULTI/EXEC指令組成原子性事務。快取機制
可用作資料庫查詢快取,顯著減少資料庫壓力。
高可用性
支援主從複製(Replication)、哨兵(Sentinel)、叢集(Cluster)等模式。
常見用途
網站快取、即時聊天、排行榜、限流、會話儲存、訊息佇列等。
Redis 使用範例
1. 配置 Redis 連線
.env設定檔:REDIS_HOST=127.0.0.1 REDIS_PORT=6379 REDIS_PASSWORD=null設定 Laravel 使用 Redis 作為快取驅動:
CACHE_DRIVER=redis2. 使用 Redis 快取
// 儲存資料到快取(儲存 10 分鐘) Cache::put('key', 'value', 10); // 讀取快取資料 $value = Cache::get('key');3. 使用 Redis 原生命令(via Facade)
use Illuminate\Support\Facades\Redis; // 儲存值 Redis::set('user:123', 'John Doe'); // 設定過期時間(60 秒) Redis::expire('user:123', 60); // 取得值 $userName = Redis::get('user:123'); echo "User Name: " . $userName;常見 Redis 命令:
SET key value EX seconds:儲存並設定過期時間GET key:取得值INCR key:值加一(可作為計數器)EXPIRE key seconds:設定過期秒數Memcached 說明
Memcached 是輕量級、分布式的記憶體快取系統,適合快取簡單資料以提高效能。
快速的記憶體快取
所有資料儲存在記憶體中,不涉及磁碟操作。
支援分布式
可在多台伺服器上擴展並實現高可用。
簡單鍵值結構
僅支援字串類型的鍵值資料。
自動過期
支援設定 TTL,自動刪除過期快取。
快取替換策略
預設使用 LRU(最近最少使用)策略。
多語言支援
PHP、Python、Java、C# 等皆有支援。
無持久化機制
重啟後資料會全部清空,僅用於快取層。
Memcached 使用範例
1. 安裝 Laravel 快取套件(若非 Laravel 專案)
2. 設定 Memcached 快取
.env設定:CACHE_DRIVER=memcached在
config/cache.php中確認:'default' => env('CACHE_DRIVER', 'memcached'),3. 使用快取範例
// 設定快取(存 5 分鐘) Cache::put('my_key', 'Hello, Memcached!', 5); // 取得快取 $my_key = Cache::get('my_key'); echo $my_key;Redis vs Memcached 比較
建議使用時機
使用 Memcached:
如果只需要簡單快取、對資料一致性與持久性要求不高,Memcached 較輕便、效能佳。
使用 Redis:
如果需要進階功能如:
則 Redis 是更佳選擇。