黄p网站_在线看中文字幕_亚洲电影免费观看_成人激情视频_欧美成视频_中国av在线

FastCache

EasySwoole 提供了一個快速緩存,是基礎(chǔ)UnixSock通訊和自定義進(jìn)程存儲數(shù)據(jù)實現(xiàn)的,提供基本的緩存服務(wù),本緩存為解決小型應(yī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ù)注冊

我們在EasySwoole全局的事件中進(jìn)行注冊

use EasySwoole\FastCache\Cache;
Cache::getInstance()->setTempDir(EASYSWOOLE_TEMP_DIR)->attachToServer(ServerManager::getInstance()->getSwooleServer());

FastCache只能在服務(wù)啟動之后使用,需要有創(chuàng)建unix sock權(quán)限(建議使用vm,docker或者linux系統(tǒng)開發(fā)),虛擬機(jī)共享目錄文件夾是無法創(chuàng)建unix sock監(jiān)聽的

客戶端調(diào)用

服務(wù)啟動后,可以在任意位置調(diào)用

use EasySwoole\FastCache\Cache;
Cache::getInstance()->set('get','a');
var_dump(Cache::getInstance()->get('get'));

相關(guān)方法

設(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è)置定時回調(diào),可用于數(shù)據(jù)定時落地

  • public function setOnTick($onTick): Cache

設(shè)置定時回調(diào)間隔

  • public function setTickInterval($tickInterval): Cache

設(shè)置進(jìn)程啟動回調(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)

推入隊列

  • public function enQueue($key, $value, $timeout = 1.0)

從隊列中取出

  • public function deQueue($key, $timeout = 1.0)

獲取隊列當(dāng)前長度

  • public function queueSize($key, $timeout = 1.0)

釋放隊列

  • public function unsetQueue($key, $timeout = 1.0)

返回當(dāng)前隊列的全部key名稱

  • public function queueList($timeout = 1.0): ?array

清空所有隊列

  • public function flushQueue(float $timeout = 1.0): bool

設(shè)置一個key的過期時間

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

移除一個key的過期時間

  • public function persist($key, $timeout = 1.0)

查看某個key的ttl

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

將哈希表 key 中的字段 field 的值設(shè)為 value

  • function hSet($key, $field, $value, float $timeout = 1.0)

獲取存儲在哈希表中指定字段的值

  • function hGet($key, $field = null, float $timeout = 1.0)

刪除一個哈希表字段

  • function hDel($key, $field = null, float $timeout = 1.0)

清空所有

  • function hFlush(float $timeout = 1.0)

獲取所有哈希表中的字段

  • function hKeys($key, float $timeout = 1.0)

迭代哈希表中的鍵值對

  • function hScan($key, $cursor = 0, $limit = 10, float $timeout = 1.0)

只有在字段 field 不存在時,設(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)

同時將多個 field-value對設(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個方法,用于數(shù)據(jù)落地以及重啟恢復(fù),在EasySwooleEvent.php中的mainServerCreate回調(diào)事件中設(shè)置以下方法:

設(shè)置回調(diào)要在注冊cache服務(wù)之前,注冊服務(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è)置定時頻率
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));
});

// 啟動時將存回的文件重新寫入
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)程時,php easyswoole.php stop 時會調(diào)用,落地數(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());

消息隊列支持

如具體查看消息隊列,請查看FastCacheQueue

主站蜘蛛池模板: 亚洲欧美国产精品久久 | 国产亚洲精品久久久久久豆腐 | 香港黄色录像片 | 欧美不卡一区二区三区 | 欧美成人综合在线 | 中文字幕在线精品 | 亚洲永久免费视频 | 伊人在线 | 国产精品永久免费 | 欧美日产国产成人免费图片 | 亚洲成人精品久久 | 久久久精品国产 | 农村妇女毛片精品久久久 | 天天操天天干视频 | 亚洲男人天堂2024 | 成人在线免费网站 | 久久综合九色综合欧美狠狠 | 欧美精品成人一区二区三区四区 | 手机看片在线 | 亚洲精品久久久久久动漫 | 欧美视频二区 | 在线播放中文字幕 | av网站在线免费观看 | 欧美日韩国产精品 | 午夜精品久久久久久久久久久久 | 日本福利在线观看 | 欧美日本国产欧美日本韩国99 | 亚洲精品3 | 免费黄色大片 | 国产美女永久免费无遮挡 | 久久99精品久久久 | 国产激情偷乱视频一区二区三区 | 亚洲久久 | 欧美久久久 | 日本黄色短片 | 精品亚洲精品 | 国产精品99久久久久久动医院 | 亚洲网色 | 日韩一区免费观看 | 欧美激情综合五月色丁香小说 | 丰满少妇久久久久久久 |