介面 yii\caching\CacheInterface
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 |
方法詳細資訊
如果快取中不包含此鍵,則將由鍵識別的值儲存到快取中。
如果快取已包含該鍵,則不會執行任何操作。
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);
從給定的鍵建立一個標準化的快取鍵。
如果給定的鍵是僅包含字母數字字元且不超過 32 個字元的字串,則該鍵將以 keyPrefix 為前綴返回。否則,將透過序列化給定的鍵、應用 MD5 雜湊並以 keyPrefix 為前綴來產生標準化的鍵。
public abstract string buildKey ( $key ) | ||
$key | mixed |
要標準化的鍵 |
return | string |
產生的快取鍵 |
---|
public function buildKey($key);
從快取中刪除具有指定鍵的值。
public abstract boolean delete ( $key ) | ||
$key | mixed |
識別要從快取中刪除的值的鍵。這可以是簡單的字串,也可以是由代表鍵的因素組成的複雜資料結構。 |
return | boolean |
如果在刪除期間沒有發生錯誤 |
---|
public function delete($key);
檢查快取中是否存在指定的鍵。
如果資料很大,這可能比從快取中取得值更快。如果快取本身不支援此功能,則此方法將嘗試模擬它,但與取得它相比沒有效能提升。請注意,此方法不檢查與快取資料關聯的依賴性(如果有的話)是否已變更。因此,呼叫 get() 可能會傳回 false,而 exists 傳回 true。
public abstract boolean exists ( $key ) | ||
$key | mixed |
識別快取值的鍵。這可以是簡單的字串,也可以是由代表鍵的因素組成的複雜資料結構。 |
return | boolean |
如果快取中存在值則為 True,如果值不在快取中或已過期則為 false。 |
---|
public function exists($key);
從快取中刪除所有值。
如果快取在多個應用程式之間共用,請謹慎執行此操作。
public abstract boolean flush ( ) | ||
return | boolean |
清除操作是否成功。 |
---|
public function flush();
使用指定的鍵從快取中檢索值。
public abstract mixed get ( $key ) | ||
$key | mixed |
識別快取值的鍵。這可以是簡單的字串,也可以是由代表鍵的因素組成的複雜資料結構。 |
return | mixed |
儲存在快取中的值;如果值不在快取中、已過期或與快取資料關聯的依賴性已變更,則為 false。 |
---|
public function get($key);
方法結合了 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 傳回 |
$duration | integer|null |
快取過期前的預設持續時間(秒)。如果未設定,將使用 defaultDuration 值。 |
$dependency | yii\caching\Dependency|null |
快取項目的依賴性。如果依賴性變更,則在透過 get() 擷取時,快取中對應的值將會失效。如果 serializer 為 |
return | mixed |
$callable 執行的結果 |
---|
public function getOrSet($key, $callable, $duration = null, $dependency = null);
在快取中儲存多個項目。每個項目都包含一個由鍵識別的值。
如果快取已包含這樣的鍵,則現有的值和過期時間將會保留。
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);
使用指定的鍵從快取中檢索多個值。
某些快取(例如 memcache、apc)允許同時檢索多個快取值,這可能會提高效能。如果快取本身不支援此功能,則此方法將嘗試模擬它。
public abstract array multiGet ( $keys ) | ||
$keys | string[] |
識別快取值的字串鍵列表 |
return | array |
與指定鍵對應的快取值列表。陣列以 (鍵, 值) 對的形式傳回。如果值未快取或已過期,則對應的陣列值將為 false。 |
---|
public function multiGet($keys);
在快取中儲存多個項目。每個項目都包含一個由鍵識別的值。
如果快取已包含這樣的鍵,則現有的值和過期時間將分別被新的值和過期時間取代。
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);
將由鍵識別的值儲存到快取中。
如果快取已包含這樣的鍵,則現有的值和過期時間將分別被新的值和過期時間取代。
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);
註冊 或 登入 以發表評論。