easyswoole - 基于swoole扩展实现的一款高性能php框架

FastCache

EasySwoole 提供了一個(gè)快速緩存,是基礎(chǔ)UnixSock通訊和自定義進(jìn)程存儲(chǔ)數(shù)據(jù)實(shí)現(xiàn)的,提供基本的緩存服務(wù),本緩存為解決小型應(yīng)用中,需要?jiǎng)硬粍?dòng)就部署Redis服務(wù)而出現(xiàn)。

組件要求

  • php: >=7.1.0
  • easyswoole/component: ^2.0
  • easyswoole/spl: ^1.1

安裝方法

composer require easyswoole/fast-cache

倉庫地址

easyswoole/fast-cache

基本使用

服務(wù)注冊(cè)

我們?cè)贓asySwoole全局的事件中進(jìn)行注冊(cè)

use EasySwoole\FastCache\Cache;
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)開發(fā)),虛擬機(jī)共享目錄文件夾是無法創(chuàng)建unix sock監(jiān)聽的

客戶端調(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)前長度

  • 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的過期時(shí)間

  • public function expire($key, int $ttl, $timeout = 1.0)

移除一個(gè)key的過期時(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)

落地重啟恢復(fù)數(shù)據(jù)方案

FastCache提供了3個(gè)方法,用于數(shù)據(jù)落地以及重啟恢復(fù),在EasySwooleEvent.php中的mainServerCreate回調(diào)事件中設(shè)置以下方法:

設(shè)置回調(diào)要在注冊(cè)cache服務(wù)之前,注冊(cè)服務(wù)之后不能更改回調(diào)事件。

<?php

use EasySwoole\FastCache\Cache;
use EasySwoole\FastCache\CacheProcessConfig;
use EasySwoole\FastCache\SyncData;
use EasySwoole\Utility\File;

// 每隔5秒將數(shù)據(jù)存回文件
Cache::getInstance()->setTickInterval(5 * 1000);//設(shè)置定時(shí)頻率
Cache::getInstance()->setOnTick(function (SyncData $SyncData, CacheProcessConfig $cacheProcessConfig) {
    $data = [
        'data'  => $SyncData->getArray(),
        'queue' => $SyncData->getQueueArray(),
        'ttl'   => $SyncData->getTtlKeys(),
     // queue支持
        'jobIds'     => $SyncData->getJobIds(),
        'readyJob'   => $SyncData->getReadyJob(),
        'reserveJob' => $SyncData->getReserveJob(),
        'delayJob'   => $SyncData->getDelayJob(),
        'buryJob'    => $SyncData->getBuryJob(),
    ];
    $path = EASYSWOOLE_TEMP_DIR . '/FastCacheData/' . $cacheProcessConfig->getProcessName();
    File::createFile($path,serialize($data));
});

// 啟動(dòng)時(shí)將存回的文件重新寫入
Cache::getInstance()->setOnStart(function (CacheProcessConfig $cacheProcessConfig) {
    $path = EASYSWOOLE_TEMP_DIR . '/FastCacheData/' . $cacheProcessConfig->getProcessName();
    if(is_file($path)){
        $data = unserialize(file_get_contents($path));
        $syncData = new SyncData();
        $syncData->setArray($data['data']);
        $syncData->setQueueArray($data['queue']);
        $syncData->setTtlKeys(($data['ttl']));
        // queue支持
        $syncData->setJobIds($data['jobIds']);
        $syncData->setReadyJob($data['readyJob']);
        $syncData->setReserveJob($data['reserveJob']);
        $syncData->setDelayJob($data['delayJob']);
        $syncData->setBuryJob($data['buryJob']);
        return $syncData;
    }
});

// 在守護(hù)進(jìn)程時(shí),php easyswoole.php stop 時(shí)會(huì)調(diào)用,落地?cái)?shù)據(jù)
Cache::getInstance()->setOnShutdown(function (SyncData $SyncData, CacheProcessConfig $cacheProcessConfig) {
    $data = [
        'data'  => $SyncData->getArray(),
        'queue' => $SyncData->getQueueArray(),
        'ttl'   => $SyncData->getTtlKeys(),
         // queue支持
        'jobIds'     => $SyncData->getJobIds(),
        'readyJob'   => $SyncData->getReadyJob(),
        'reserveJob' => $SyncData->getReserveJob(),
        'delayJob'   => $SyncData->getDelayJob(),
        'buryJob'    => $SyncData->getBuryJob(),
    ];
    $path = EASYSWOOLE_TEMP_DIR . '/FastCacheData/' . $cacheProcessConfig->getProcessName();
    File::createFile($path,serialize($data));
});

Cache::getInstance()->setTempDir(EASYSWOOLE_TEMP_DIR)->attachToServer(ServerManager::getInstance()->getSwooleServer());

消息隊(duì)列支持

如具體查看消息隊(duì)列,請(qǐng)查看FastCacheQueue

主站蜘蛛池模板: 紫外交联仪,紫外透射仪,紫外灯-上海析浦科学仪器有限公司 | 重庆木门_重庆木门十大品牌_重庆套装门_重庆烤漆门_重庆套装门十大品牌_重庆木门一线品牌_重庆川田木门 | 逍遥安卓模拟器_安卓模拟器电脑版_安卓手游模拟器哪个好用_逍遥手机模拟器官网 | 生物除臭_废气处理_玻璃钢风机_布袋除尘_脱硫脱硝_催化燃烧_生物滤池_广东正州环保科技股份有限公司 | 铜排,异型紫棒,紫铜棒,紫铜微孔管,异型黄管,黄铜管,异形紫管,紫铜管,焊接铜管,散热器铜管,电力铜管_河间市通海铜业有限公司 | 深圳网站建设-量身定制原创设计-专业网站建设公司【企术】 | 全国产品维权打假真伪验证系统-石家庄市海略科技有限公司官方网站 | 秦皇岛市信恒电子科技有限公司| 深圳市桃子自动化科技有限公司-点胶机_灌胶机_焊锡机_螺丝机_SCARA机器人 | 语音芯片_蓝牙芯片_ble数传芯片_蓝牙数传模块厂家_拓达半导体-蓝牙数传芯片模块原厂 | 金属探测机_食品金属探测仪_食品金属探测器_广东善安金属检测机 金属剪切机,金属打包机,废钢剪切机,废铁压块机,金属压块机,废纸打包机,重废龙门剪,废钢龙门剪,箱式剪,液压剪切机-瑞顿机械装备制造江阴有限公司 | 西安泰富西玛电机有限公司总部-电机-高压电机-西玛电机-西安西玛电机-泰富西玛电机-西安电机厂-西玛电机销售 | 营销型网站建设-企业高端网站设计制作公司-16年建站品牌 | 塑木地板,塑木栏杆,塑木地板价格,塑木地板厂家—浙江尚元塑木制品有限公司 | 转轮除湿机,转轮除湿机,恒温恒湿机厂家_合肥铂克环境设备有限公司 | 西门子伺服电机维修_西门子变频器维修_西门子伺服驱动器维修_数控系统维修_PL维修-上海仰光电子 西克制冷官网│制冷机组冷风机冷库设备厂家-西克制冷(无锡)有限公司_西克制冷(无锡)有限公司 | 扬州市德友线缆有限公司-业从事高端特种线缆研发、制造、销售与服务。 | 京建鹏达_商用无烟烧烤设备多少钱|开店商用自助旋转烧烤炉价格|无烟电烧烤炉批发厂家|无烟烧烤桌定做厂商-京建鹏达烧烤设备网 | 中婴网,推动母婴产业健康·可持续发展,婴童网络专业传媒,母婴网,360孕婴童网,婴童品牌,婴儿用品品牌,婴儿用品加盟店,母婴用品加盟店 | 四川超声波清洗机厂家-旋转喷淋清洗机设备-成都鑫荣诚超声波科技有限公司 | 前途汇医药科技(北京)有限公司 | 机械设备回收_二手机器回收_设备拆除回收_广州益美机械设备回收公司 | 冷却特性测试仪_ 刀柄热胀仪_加油小车价格_皮带张力仪_上海川奇机电设备有限公司 | 清洁度检测_手动颗粒萃取设备_自动颗粒萃取设备 - 厦门迈纳光学技术有限公司 | 混凝土砂石分离机_龙门洗车机_振动型砂石分离机 - 青州同辉环保机械 | 学汽修,学汽修技术,汽修培训班,汽车美容培训,汽车新能源技术培训-广州万通汽车培训学校[官方网站] | 长沙物流公司|湖南货物运输公司|长沙第三方物流公司-国联物流 湖南第三方物流专家 | 免喷涂材料,免喷涂塑料,免喷涂注塑,免喷涂挤塑,免喷涂工艺-中山鸿盛免喷涂 | 深圳-广州-惠州-东莞-重型货架-悬臂-轻中型货架-深圳市诺普泰仓储设备有限公司 | 浙江桥梁检测车出租_杭州桥检车出租_桥梁检测车出租_桥检车租赁_桥梁检测车租赁-广州众诚设备租赁有限公司 | 萍乡市康裕新能源科技有限公司| 无轴螺旋输送机_双无轴螺旋输送机_垃圾,污泥无轴螺旋输送机-新乡市大汉振动机械有限公司 | 无缝钢管生产厂家-20G-L360N无缝钢管价格-天津海诚无缝钢管集团 无尘投料站-真空上料机-旋振筛|超声波振动筛|摇摆筛|筛分机-新乡市欧霖佳机械有限公司 | 阴_阳离子聚丙烯酰胺价格_聚合氯化铝厂家_聚合硫酸铁-巩义市亿洋水处理材料有限公司 | 内衬不锈钢复合管,大口径内衬不锈钢复合钢管,双金属复合管,内衬不锈钢复合管厂家-江苏新澎 | 呼吸家官网|肺功能检测仪生产厂家|国产肺功能仪知名品牌|肺功能检测仪|肺功能测试仪|婴幼儿肺功能仪|弥散残气肺功能仪|肺功能测试系统|广州红象医疗科技有限公司|便携式肺功能仪|大肺功能仪|呼吸康复一体机|儿童肺功能仪|肺活量计|医用简易肺功能仪|呼吸康复系统|肺功能仪|弥散肺功能仪(大肺)|便携式肺功能检测仪|肺康复|呼吸肌力测定肺功能仪|肺功能测定仪|呼吸神经肌肉刺激仪|便携式肺功能 | 数字多媒体展厅设计,智慧科技互动企业展馆展厅设计公司-深圳炫之风 | 液晶拼接屏_三星46寸/55寸/LG液晶拼接屏_深圳拼接墙厂家_电视大屏幕液晶拼接_高清工业级液晶监视器 | 营销型网站建设_网站设计_网页制作_找北京恒基建网站公司 | 磐林投资-大宗林产品现货电子交易|林业碳汇|林权交易|农林产品投资 | 山东土工膜_复合土工膜_防水板生产厂家-山东德旭达土工材料有限公司 |