0 關注者

介面 yii\caching\CacheInterface

繼承ArrayAccess
由以下類別實作yii\caching\ApcCache, yii\caching\ArrayCache, yii\caching\Cache, yii\caching\DbCache, yii\caching\DummyCache, yii\caching\FileCache, yii\caching\MemCache, yii\caching\WinCache, yii\caching\XCache, yii\caching\ZendDataCache
原始碼 https://github.com/yiisoft/yii2/blob/master/framework/caching/CacheInterface.php

CacheInterface 是快取的基本介面。

資料項目可以透過呼叫 set() 儲存在快取中,並在之後(在相同或不同的請求中)透過 get() 檢索。在這兩個操作中,都需要一個識別資料項目的鍵。在呼叫 set() 時,也可以指定過期時間和/或依賴性。如果在呼叫 get() 時資料項目過期或依賴性變更,快取將不會傳回任何資料。

快取的典型用法模式如下

$key = 'demo';
$data = $cache->get($key);
if ($data === false) {
    // ...generate $data here...
    $cache->set($key, $data, $duration, $dependency);
}

由於 CacheInterface 擴展了 ArrayAccess 介面,因此可以像陣列一樣使用。例如:

$cache['foo'] = 'some data';
echo $cache['foo'];

有關 Cache 的更多詳細資訊和用法資訊,請參閱快取指南文章

版本 描述
2.0.13. 先前的框架版本使用抽象類別 [[yii\caching\Cache]] 作為介面。

公開方法

隱藏繼承的方法

方法 描述 定義於
add() 如果快取中不包含此鍵,則將由鍵識別的值儲存到快取中。 yii\caching\CacheInterface
buildKey() 從給定的鍵建立一個標準化的快取鍵。 yii\caching\CacheInterface
delete() 從快取中刪除具有指定鍵的值。 yii\caching\CacheInterface
exists() 檢查快取中是否存在指定的鍵。 yii\caching\CacheInterface
flush() 從快取中刪除所有值。 yii\caching\CacheInterface
get() 使用指定的鍵從快取中檢索值。 yii\caching\CacheInterface
getOrSet() 方法結合了 set()get() 方法,以檢索由 $key 識別的值,或者在 $key 沒有可用的快取時儲存 $callable 執行的結果。 yii\caching\CacheInterface
multiAdd() 在快取中儲存多個項目。每個項目都包含一個由鍵識別的值。 yii\caching\CacheInterface
multiGet() 使用指定的鍵從快取中檢索多個值。 yii\caching\CacheInterface
multiSet() 在快取中儲存多個項目。每個項目都包含一個由鍵識別的值。 yii\caching\CacheInterface
set() 將由鍵識別的值儲存到快取中。 yii\caching\CacheInterface

方法詳細資訊

隱藏繼承的方法

add() public abstract method

如果快取中不包含此鍵,則將由鍵識別的值儲存到快取中。

如果快取已包含該鍵,則不會執行任何操作。

public abstract boolean add ( $key, $value, $duration 0, $dependency null )
$key mixed

識別要快取的值的鍵。這可以是簡單的字串,也可以是由代表鍵的因素組成的複雜資料結構。

$value mixed

要快取的值

$duration integer

快取值將過期的秒數。0 表示永不過期。

$dependency yii\caching\Dependency|null

快取項目的依賴性。如果依賴性變更,則在透過 get() 擷取時,快取中對應的值將會失效。如果 serializer 為 false,則忽略此參數。

return boolean

值是否成功儲存到快取中

                public function add($key, $value, $duration = 0, $dependency = null);

            
buildKey() public abstract method

從給定的鍵建立一個標準化的快取鍵。

如果給定的鍵是僅包含字母數字字元且不超過 32 個字元的字串,則該鍵將以 keyPrefix 為前綴返回。否則,將透過序列化給定的鍵、應用 MD5 雜湊並以 keyPrefix 為前綴來產生標準化的鍵。

public abstract string buildKey ( $key )
$key mixed

要標準化的鍵

return string

產生的快取鍵

                public function buildKey($key);

            
delete() public abstract method

從快取中刪除具有指定鍵的值。

public abstract boolean delete ( $key )
$key mixed

識別要從快取中刪除的值的鍵。這可以是簡單的字串,也可以是由代表鍵的因素組成的複雜資料結構。

return boolean

如果在刪除期間沒有發生錯誤

                public function delete($key);

            
exists() public abstract method

檢查快取中是否存在指定的鍵。

如果資料很大,這可能比從快取中取得值更快。如果快取本身不支援此功能,則此方法將嘗試模擬它,但與取得它相比沒有效能提升。請注意,此方法不檢查與快取資料關聯的依賴性(如果有的話)是否已變更。因此,呼叫 get() 可能會傳回 false,而 exists 傳回 true。

public abstract boolean exists ( $key )
$key mixed

識別快取值的鍵。這可以是簡單的字串,也可以是由代表鍵的因素組成的複雜資料結構。

return boolean

如果快取中存在值則為 True,如果值不在快取中或已過期則為 false。

                public function exists($key);

            
flush() public abstract method

從快取中刪除所有值。

如果快取在多個應用程式之間共用,請謹慎執行此操作。

public abstract boolean flush ( )
return boolean

清除操作是否成功。

                public function flush();

            
get() public abstract method

使用指定的鍵從快取中檢索值。

public abstract mixed get ( $key )
$key mixed

識別快取值的鍵。這可以是簡單的字串,也可以是由代表鍵的因素組成的複雜資料結構。

return mixed

儲存在快取中的值;如果值不在快取中、已過期或與快取資料關聯的依賴性已變更,則為 false。

                public function get($key);

            
getOrSet() public abstract method

方法結合了 set()get() 方法,以檢索由 $key 識別的值,或者在 $key 沒有可用的快取時儲存 $callable 執行的結果。

用法範例

public function getTopProducts($count = 10) {
    $cache = $this->cache; // Could be Yii::$app->cache
    return $cache->getOrSet(['top-n-products', 'n' => $count], function ($cache) use ($count) {
        return Products::find()->mostPopular()->limit($count)->all();
    }, 1000);
}
public abstract mixed getOrSet ( $key, $callable, $duration null, $dependency null )
$key mixed

識別要快取的值的鍵。這可以是簡單的字串,也可以是由代表鍵的因素組成的複雜資料結構。

$callable callable|Closure

將用於產生要快取的值的可呼叫物件或閉包。如果 $callable 傳回 false,則該值將不會被快取。

$duration integer|null

快取過期前的預設持續時間(秒)。如果未設定,將使用 defaultDuration 值。

$dependency yii\caching\Dependency|null

快取項目的依賴性。如果依賴性變更,則在透過 get() 擷取時,快取中對應的值將會失效。如果 serializerfalse,則忽略此參數。

return mixed

$callable 執行的結果

                public function getOrSet($key, $callable, $duration = null, $dependency = null);

            
multiAdd() public abstract method

在快取中儲存多個項目。每個項目都包含一個由鍵識別的值。

如果快取已包含這樣的鍵,則現有的值和過期時間將會保留。

public abstract array multiAdd ( $items, $duration 0, $dependency null )
$items array

要快取的項目,以鍵值對的形式。

$duration integer

快取值將過期的預設秒數。0 表示永不過期。

$dependency yii\caching\Dependency|null

快取項目的依賴性。如果依賴性變更,則在透過 get() 擷取時,快取中對應的值將會失效。如果 serializer 為 false,則忽略此參數。

return array

失敗的鍵陣列

                public function multiAdd($items, $duration = 0, $dependency = null);

            
multiGet() public abstract method

使用指定的鍵從快取中檢索多個值。

某些快取(例如 memcache、apc)允許同時檢索多個快取值,這可能會提高效能。如果快取本身不支援此功能,則此方法將嘗試模擬它。

public abstract array multiGet ( $keys )
$keys string[]

識別快取值的字串鍵列表

return array

與指定鍵對應的快取值列表。陣列以 (鍵, 值) 對的形式傳回。如果值未快取或已過期,則對應的陣列值將為 false。

                public function multiGet($keys);

            
multiSet() public abstract method

在快取中儲存多個項目。每個項目都包含一個由鍵識別的值。

如果快取已包含這樣的鍵,則現有的值和過期時間將分別被新的值和過期時間取代。

public abstract array multiSet ( $items, $duration null, $dependency null )
$items array

要快取的項目,以鍵值對的形式。

$duration integer|null

快取過期前的預設持續時間(秒)。如果未設定,則使用預設的 defaultDuration 值。

$dependency yii\caching\Dependency|null

快取項目的依賴性。如果依賴性變更,則在透過 get() 擷取時,快取中對應的值將會失效。如果 serializer 為 false,則忽略此參數。

return array

失敗的鍵陣列

                public function multiSet($items, $duration = null, $dependency = null);

            
set() public abstract method

將由鍵識別的值儲存到快取中。

如果快取已包含這樣的鍵,則現有的值和過期時間將分別被新的值和過期時間取代。

public abstract boolean set ( $key, $value, $duration null, $dependency null )
$key mixed

識別要快取的值的鍵。這可以是簡單的字串,也可以是由代表鍵的因素組成的複雜資料結構。

$value mixed

要快取的值

$duration integer|null

快取過期前的預設持續時間(秒)。如果未設定,則使用預設的 defaultDuration 值。

$dependency yii\caching\Dependency|null

快取項目的依賴性。如果依賴性變更,則在透過 get() 擷取時,快取中對應的值將會失效。如果 serializer 為 false,則忽略此參數。

return boolean

值是否成功儲存到快取中

                public function set($key, $value, $duration = null, $dependency = null);