Redis 作為高效能 Key-Value 存儲,支援豐富資料結構與原子操作,是 PHP 應用常用快取層。本文涵蓋 Redis Server、phpredis 擴展安裝與驗證全流程。
wget https://redis.googlecode.com/files/redis-2.4.11.tar.gz
tar xzf redis-2.4.11.tar.gz && cd redis-2.4.11
make
src/redis-server # 啟動伺服器(預設 6379 埠)
# 新終端機測試
src/redis-cli
redis 127.0.0.1:6379> set foo bar
OK
redis 127.0.0.1:6379> get foo
"bar"
wget https://nodeload.github.com/owlient/phpredis/zipball/master
unzip owlient-phpredis-*.zip && cd owlient-phpredis-*/
/usr/local/php-5.2.17/bin/phpize
./configure --with-php-config=/usr/local/php-5.2.17/bin/php-config
make && make install
# php.ini 載入
extension_dir = "/usr/local/php-5.2.17/lib/php/extensions/no-debug-non-zts-20060613/"
extension=redis.so
service nginx reload # 或 php-fpm reload
建立 info.php:<?php phpinfo(); ?>,瀏覽器確認 redis 區塊出現,支援版本顯示正常。
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// String
$redis->set('key', 'value');
$val = $redis->get('key');
// List
$redis->lpush('list', 'a', 'b', 'c');
$arr = $redis->lrange('list', 0, -1);
// Set
$redis->sadd('set', 'm1', 'm2');
$members = $redis->smembers('set');
// 進階:Pipeline 批次操作
$pipe = $redis->multi(Redis::PIPELINE);
for ($i=0; $i<1000; $i++) { $pipe->set("k$i", "v$i"); }
$pipe->exec();
| 特性 | Redis | Memcached |
|---|---|---|
| 資料結構 | String/List/Set/ZSet/Hash | 單純 String |
| 持久化 | RDB/AOF 可選 | 無(純記憶體) |
| 複寫 | Master-Slave 原生支援 | 需客戶端/Proxy 實現 |
| 記憶體效率 | 較高(針對小值優化) | 一般 |
需求單純快取用 Memcached;需資料結構、持久化、發佈訂閱選 Redis。