Kyoto Tycoon(KT)是 Tokyo Tyrant 作者 Mikio Hirabayashi 開發的數據庫網絡服務層,提供插件機制可掛載多種存儲引擎,通過 HTTP/TCP 協議訪問,適合高性能鍵值存儲場景。
推薦使用 Net/KyotoTycoon(PEAR 或 Composer 安裝):
composer require net/kyototycoon
<?php
require_once 'Net/KyotoTycoon.php';
use Net\KyotoTycoon;
$cache = new KyotoTycoon([
'host' => 'localhost',
'port' => 1978 // KT 默認端口
]);
// 寫入
$cache->set('foo', 'bar');
// 讀取
$value = $cache->get('foo');
echo $value . "\n"; // 輸出 bar
// 刪除
$cache->remove('foo');
// 批量操作
$cache->setMultiple(['key1'=>'val1', 'key2'=>'val2']);
$vals = $cache->getMultiple(['key1', 'key2']);
// 設置過期時間(秒)
$cache->set('session_id', $data, 3600);
| 方法 | 說明 |
|---|---|
| set($key, $value, $expire=0) | 寫入,可選過期秒數 |
| get($key) | 讀取,不存在返回 false |
| remove($key) | 刪除 |
| setMultiple(array $pairs, $expire=0) | 批量寫入 |
| getMultiple(array $keys) | 批量讀取 |
| increment($key, $num=1) | 原子增長(數值類型) |
| decrement($key, $num=1) | 原子減少 |
| clear() | 清空數據庫(慎用) |
| getStatus() | 獲取服務器狀態信息 |
$cache = new KyotoTycoon([
'host' => '127.0.0.1',
'port' => 1978,
'timeout' => 5, // 連接超時
'persistent' => true, // 持久連接
'prefix' => 'myapp:', // 鍵前綴,避免衝突
'serializer' => 'igbinary' // 序列化器:php/igbinary/msgpack
]);
| 特性 | Kyoto Tycoon | Redis | Memcached |
|---|---|---|---|
| 持久化 | 支持(插件) | 支持(RDB/AOF) | 不支持 |
| 數據結構 | KV + 表 | 豐富(5 大類型) | 簡單 KV |
| Lua 腳本 | 不支持 | 支持 | 不支持 |
| 集群/高可用 | 需代理 | 原生 Cluster/Sentinel | 客戶端一致性哈希 |
| 成熟度/生態 | 較小眾 | 極其活躍 | 成熟穩定 |
新專案首選 Redis,KT 適合遷移舊系統或特定嵌入式場景。