CodeIgniter4 緩存驅動器

2020-08-17 16:45 更新

CodeIgniter 提供了幾種最常用的快速緩存的封裝,除了基于文件的緩存, 其他的緩存都需要對服務器進行特殊的配置,如果配置不正確,將會拋出 一個致命錯誤異常(Fatal Exception)。

示例代碼

以下示例代碼展示控制器中的常見使用模式。

if ( ! $foo = cache('foo'))
{
        echo 'Saving to the cache!<br />';
        $foo = 'foobarbaz!';


        // Save into the cache for 5 minutes
        cache()->save('foo', $foo, 300);
}


echo $foo;

你可以通過 Services 類直接獲取緩存引擎的實例:

$cache = \Config\Services::cache();


$foo = $cache->get('foo');

配置緩存

緩存引擎的所有配置都在 application/Config/Cache.php 文件中。在該文件中,以下項目可用。

$handler

$handler 處理器是啟動引擎時應用作主處理程序??捎玫拿Q有: dummy, file, memcached, redis, wincache。

$backupHandler

在第一選擇 $hanlder 不可用的情況下,這是要加載的下一個緩存處理程序。這通常是 文件 處理程序,因為文件系統(tǒng)始終可用,但可能不適合更復雜的多服務器設置。

$prefix

如果您有多個應用程序使用相同的緩存存儲,則可以在此處添加一個前綴到所有鍵名稱的自定義前綴。

$path

file 處理程序使用它來顯示應該將緩存文件保存到哪里。

$memcached

這是使用 Memcache(d) 處理程序時將使用的一系列服務器。

$redis

使用 Redis 處理程序時要使用的Redis服務器的設置。

類參考

isSupported()

返回: 如果支持,則為TRUE,否則為FALSE
返回類型: 布爾值

get($key)

參數(shù): $key (string) – Cache 緩存項名稱
返回: 項目值或FALSE如果沒有找到
返回類型: mixed

此方法將嘗試從緩存存儲中獲取項目。如果該項目不存在,該方法將返回FALSE。

Example:

$foo = $cache->get('my_cached_item');

save($key, $data[, $ttl = 60[, $raw = FALSE]])

參數(shù): $key (string) – Cache item name
$data (mixed) – the data to save
$ttl (int) – Time To Live, in seconds (default 60)
$raw (bool) – Whether to store the raw value
返回: TRUE on success, FALSE on failure
返回類型: string

此方法將會將項目保存到緩存存儲。如果保存失敗,該方法將返回FALSE。

Example:

$cache->save('cache_item_id', 'data_to_cache');

注解

$raw 參數(shù)僅由 Memcache 使用,以便允許使用 increment()decrement()

delete($key)

參數(shù): $key (string) – name of cached item
返回: TRUE on success, FALSE on failure
返回類型: bool

此方法將從緩存存儲中刪除特定項目。如果項目刪除失敗,該方法將返回FALSE。

Example:

$cache->delete('cache_item_id');

increment($key[, $offset = 1])

參數(shù): $key (string) – Cache ID
$offset (int) – Step/value to add
返回: New value on success, FALSE on failure
返回類型: mixed

Performs atomic incrementation of a raw stored value. 執(zhí)行原始存儲值的原子增量

Example:

// 'iterator' has a value of 2


$cache->increment('iterator'); // 'iterator' is now 3


$cache->increment('iterator', 3); // 'iterator' is now 6

decrement($key[, $offset = 1])

參數(shù): $key (string) – Cache ID
$offset (int) – Step/value to reduce by
返回: New value on success, FALSE on failure
返回類型: mixed

執(zhí)行原始存儲值的原子遞減。

Example:

// 'iterator' has a value of 6


$cache->decrement('iterator'); // 'iterator' is now 5


$cache->decrement('iterator', 2); // 'iterator' is now 3

clean()

返回: TRUE on success, FALSE on failure
返回類型: bool

此方法將 ‘clean’ 整個緩存。如果緩存文件的刪除失敗,該方法將返回FALSE。 Example:

$cache->clean();

cache_info()

返回: Information on the entire cache database
返回類型: mixed

此方法將返回整個緩存中的信息。

Example:

var_dump($cache->cache_info());

注解

返回的信息和數(shù)據(jù)的結構取決于正在使用的適配器。

getMetadata($key)

參數(shù): $key (string) – Cache item name
返回: Metadata for the cached item
返回類型: mixed

此方法將返回緩存中特定項目的詳細信息。

Example:

var_dump($cache->getMetadata('my_cached_item'));

注解

返回的信息和數(shù)據(jù)的結構取決于正在使用的適配器。

驅動器

基于文件的緩存

和輸出類的緩存不同的是,基于文件的緩存支持只緩存視圖的某一部分。使用這個緩存時要注意, 確保對你的應用程序進行基準測試,因為當磁盤 I/O 頻繁時可能對緩存有負面影響。

Memcached 緩存

可以在緩存配置文件中指定多個 Memcached 服務器。

關于 Memcached 的更多信息,請參閱 http://php.net/memcached

WinCache 緩存

在 Windows 下,你還可以使用 WinCache 緩存。

關于 WinCache 的更多信息,請參閱 http://php.net/wincache。

Redis 緩存

Redis 是一個在內存中以鍵值形式存儲數(shù)據(jù)的緩存,使用 LRU(最近最少使用算法)緩存模式, 要使用它,你需要先安裝 Redis 服務器和 phpredis 擴展。

連接 Redis 服務器的配置信息必須保存到 application/config/redis.php 文件中,可用參數(shù)有:

$config['host'] = '127.0.0.1';
$config['password'] = NULL;
$config['port'] = 6379;
$config['timeout'] = 0;

有關Redis的更多信息,請參閱 http://redis.io

虛擬緩存(Dummy Cache)

這是一個永遠不會命中的緩存,它不存儲數(shù)據(jù),但是它允許你在當使用的緩存在你的環(huán)境下不被支持時, 仍然保留使用緩存的代碼。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號