FastCache 2.x
EasySwoole 提供了一個(gè)快速緩存,是基礎(chǔ)UnixSock通訊和自定義進(jìn)程存儲(chǔ)數(shù)據(jù)實(shí)現(xiàn)的,提供基本的緩存服務(wù),本緩存為解決小型應(yīng)用中,需要?jiǎng)硬粍?dòng)就部署Redis服務(wù)而出現(xiàn)。
目前 Fast-Cache
組件最新版本為 2.x
,2.x
版本為了讓快速緩存變得更輕量級(jí),所以放棄了落地重啟恢復(fù)數(shù)據(jù)的特性,推薦用戶使用 Memcached
EasySwoole Memcached 組件 或者 Redis
EasySwoole Redis 組件 對(duì)緩存數(shù)據(jù)進(jìn)行落地處理。
如果想要使用 1.3.x
版本的 Fast-Cache
組件,請(qǐng)查看文檔 Fast-Cache 組件 1.3.x
組件要求
- php: >=7.1.0
- easyswoole/component: ^2.0
- easyswoole/spl: ^1.1
安裝方法
composer require easyswoole/fast-cache
倉(cāng)庫(kù)地址
基本使用
服務(wù)注冊(cè)
我們?cè)贓asySwoole全局的事件中進(jìn)行注冊(cè)
<?php
use EasySwoole\FastCache\Cache;
// 在最新的 2.x 中,改為 config 配置文件配置
$config = new \EasySwoole\FastCache\Config();
$config->setTempDir(EASYSWOOLE_TEMP_DIR);
Cache::getInstance($config)->attachToServer(ServerManager::getInstance()->getSwooleServer());
// 老版本(2.x 以前)依舊使用以下即可
Cache::getInstance()->setTempDir(EASYSWOOLE_TEMP_DIR)->attachToServer(ServerManager::getInstance()->getSwooleServer());
FastCache只能在服務(wù)啟動(dòng)之后使用,需要有創(chuàng)建unix sock權(quán)限(建議使用vm,docker或者linux系統(tǒng)開(kāi)發(fā)),虛擬機(jī)共享目錄文件夾是無(wú)法創(chuàng)建unix sock監(jiān)聽(tīng)的
客戶端調(diào)用
服務(wù)啟動(dòng)后,可以在任意位置調(diào)用
use EasySwoole\FastCache\Cache;
Cache::getInstance()->set('get','a');
var_dump(Cache::getInstance()->get('get'));
相關(guān)方法
設(shè)置臨時(shí)目錄
- public function setTempDir(string $tempDir): Cache
設(shè)置緩存進(jìn)程數(shù)
- public function setProcessNum(int $num): Cache
設(shè)置緩存進(jìn)程所在服務(wù)名
- public function setServerName(string $serverName): Cache
設(shè)置定時(shí)回調(diào),可用于數(shù)據(jù)定時(shí)落地
- public function setOnTick($onTick): Cache
設(shè)置定時(shí)回調(diào)間隔
- public function setTickInterval($tickInterval): Cache
設(shè)置進(jìn)程啟動(dòng)回調(diào),可以用于數(shù)據(jù)落地恢復(fù)
- public function setOnStart($onStart): Cache
設(shè)置進(jìn)程關(guān)閉回調(diào),可以用于數(shù)據(jù)落地
- public function setOnShutdown(callable $onShutdown): Cache
設(shè)置指定 key 的值
- public function set($key, $value, ?int $ttl = null, float $timeout = 1.0)
獲取指定 key 的值
- public function get($key, float $timeout = 1.0)
刪除指定 key的值
- public function unset($key, float $timeout = 1.0)
獲取所有key的值
- public function keys($key = null, float $timeout = 1.0): ?array
清空所有進(jìn)程的數(shù)據(jù)
- public function flush(float $timeout = 1.0)
推入隊(duì)列
- public function enQueue($key, $value, $timeout = 1.0)
從隊(duì)列中取出
- public function deQueue($key, $timeout = 1.0)
獲取隊(duì)列當(dāng)前長(zhǎng)度
- public function queueSize($key, $timeout = 1.0)
釋放隊(duì)列
- public function unsetQueue($key, $timeout = 1.0)
返回當(dāng)前隊(duì)列的全部key名稱
- public function queueList($timeout = 1.0): ?array
清空所有隊(duì)列
- public function flushQueue(float $timeout = 1.0): bool
設(shè)置一個(gè)key的過(guò)期時(shí)間
- public function expire($key, int $ttl, $timeout = 1.0)
移除一個(gè)key的過(guò)期時(shí)間
- public function persist($key, $timeout = 1.0)
查看某個(gè)key的ttl
- public function ttl($key, $timeout = 1.0)
將哈希表 key 中的字段 field 的值設(shè)為 value
- function hSet($key, $field, $value, float $timeout = 1.0)
獲取存儲(chǔ)在哈希表中指定字段的值
- function hGet($key, $field = null, float $timeout = 1.0)
刪除一個(gè)哈希表字段
- function hDel($key, $field = null, float $timeout = 1.0)
清空所有
- function hFlush(float $timeout = 1.0)
獲取所有哈希表中的字段
- function hKeys($key, float $timeout = 1.0)
迭代哈希表中的鍵值對(duì)
- function hScan($key, $cursor = 0, $limit = 10, float $timeout = 1.0)
只有在字段 field 不存在時(shí),設(shè)置哈希表字段的值
- function hSetnx($key, $field, $value, float $timeout = 1.0)
查看哈希表 key 中,指定的字段是否存在
- function hExists($key, $field, float $timeout = 1.0)
獲取哈希表中字段的數(shù)量
- function hLen($key, float $timeout = 1.0)
為哈希表 key 中的指定字段的整數(shù)值加上
- function hIncrby($key, $field, $value, float $timeout = 1.0)
同時(shí)將多個(gè) field-value對(duì)設(shè)置到哈希表 key 中
- function hMset($key, $fieldValues, float $timeout = 1.0)
獲取所有給定字段的值
- function hMget($key, $fields, float $timeout = 1.0)
獲取哈希表中所有值
- function hVals($key, float $timeout = 1.0)
獲取在哈希表中指定 key 的所有字段和值
- function hGetAll($key, float $timeout = 1.0)
消息隊(duì)列支持
如具體查看消息隊(duì)列,請(qǐng)查看FastCacheQueue