1. 程式人生 > >Yii2 cache的用法(1)

Yii2 cache的用法(1)

數據庫 強制 style 環境 new xca led 內容 expr

數據緩存需要緩存組件提供支持,它代表各種緩存存儲器, 例如內存,文件,數據庫。

‘components‘ => [
    ‘cache‘ => [
              ‘class‘ => ‘yii\caching\FileCache‘,
              // 上面這種是Yii默認的緩存方式,標準文件緩存數據,當然也可以使用其他方式,如:
              // ‘class‘ => ‘yii\caching\MemCache‘,
              // ‘class‘ => ‘yii\caching\ApcCache‘,
          ],
]
支持的緩存方式

    yii\caching\ApcCache:使用 PHP APC 擴展。這個選項可以 認為是集中式應用程序環境中(例如:單一服務器, 沒有獨立的負載均衡器等)最快的緩存方案。
    yii\caching\DbCache:使用一個數據庫的表存儲緩存數據。要使用這個緩存,你必須 創建一個與 yii\caching\DbCache::cacheTable 對應的表。
    yii\caching\DummyCache:僅作為一個緩存占位符,不實現任何真正的緩存功能。 這個組件的目的是為了簡化那些需要查詢緩存有效性的代碼。
例如,在開發中如果服務器沒有實際的緩存支持,用它配置 一個緩存組件。一個真正的緩存服務啟用後,可以再切換為使用相應的緩存組件。
兩種條件下你都可以使用同樣的代碼 Yii
::$app->cache->get($key) 嘗試從緩存中取回數據而不用擔心 Yii::$app->cache 可能是 null。 yii\caching\FileCache:使用標準文件存儲緩存數據。這個特別適用於 緩存大塊數據,例如一個整頁的內容。 yii\caching\MemCache:使用 PHP memcache 和 memcached 擴展。 這個選項被看作分布式應用環境中(例如:多臺服務器, 有負載均衡等)最快的緩存方案。 yii\redis\Cache:實現了一個基於 Redis 鍵值對存儲器 的緩存組件(需要 redis 2.6.12 及以上版本的支持 )。 yii\caching\WinCache:使用 PHP WinCache (另可參考 )擴展。 yii\caching\XCache:使用 PHP XCache擴展。 yii\caching\ZendDataCache:使用 Zend Data Cache 作為底層緩存媒介。 緩存的增刪改查示例
// 加載緩存組件 $cache = \Yii::$app->cache; // 添加一個緩存 $cache->add(‘name‘,‘zhangsan‘); // 更改一個緩存 $cache->set(‘name‘ , ‘lisi‘); // 刪除一個緩存 $cache->delete(‘name‘); // 獲取緩存內容 $cache->get(‘name‘) // 查看緩存是否存在 if($cache->exists(‘name‘)){ echo ‘存在‘; } // 同時增加多個緩存 $cache->madd([‘name‘ => ‘zhangsan‘ , ‘age‘ => 18]); // 同時獲取多個緩存 var_dump($cache->mget([‘name‘ , ‘age‘])); // 清空緩存 $cache->flush(); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 設置緩存有效期 默認情況下,緩存中的數據會永久存留,除非它被某些緩存策略強制移除(例如: 緩存空間已滿,最老的數據會被移除)。要想改變此特性,可以使用 yii\caching\Cache::add() 和 yii\caching\Cache::set() 的第三個參數來改變。 // 加載緩存組件 $cache = \Yii::$app->cache; // 默認該緩存在20秒之後過期 $cache->add(‘name‘,‘zhangsan‘,20); // 同樣 $cache->set(‘name‘,‘zhangsan‘,20); 1 2 3 4 5 6 1 2 3 4 5 6 緩存依賴 除了超時設置,緩存數據還可能受到緩存依賴的影響而失效。我們可以使用 yii\caching\Cache::add() 和 yii\caching\Cache::set() 的第四個參數來設置。 // 加載組件 $cache = \Yii::$app->cache; // 文件依賴 $dependency = new \yii\caching\FileDependency([‘fileName‘=>‘robots.txt‘]); // 如果 robots.txt 被修改,該緩存也立刻失效 $cache->add(‘the‘, ‘hello world!‘, 3000, $dependency); $result = $cache->get(‘the‘); // 表達式依賴 $dependency = new \yii\caching\ExpressionDependency( [‘expression‘ => ‘\Yii::$app->request->get("name")‘] ); // 這裏使用的表達式是獲取$_GET[‘name‘]的值,如果值改變,該緩存失效 $cache->add(‘two‘, ‘hello world!‘, 3000, $dependency); $result = $cache->get(‘two‘); // 數據庫依賴 $dependency = new \yii\caching\DbDependency( [‘sql‘ => ‘SELECT count(*) FROM test.user‘] ); // 當數據庫字段發生變化時,該緩存失效 $cache->add(‘three‘, ‘hello world!‘, 3000, $dependency); $result = $cache->get(‘three‘);

Yii2 cache的用法(1)