SlideShare a Scribd company logo
1 of 20
Cache:Yii2不同緩存的使用方法
Redis,FileCache,DbCache
大綱
緩存基本概念
緩存的配置
緩存的種類
緩存查看
緩存的基本概念
緩存是提升 Web 應用性能簡便有效的方式。通過將相對靜態的數據 存儲到緩存並在收到
請求時取回緩存,應用程序便節省了每次重新生 成這些數據所需的時間。
緩存可以應用在 Web 應用程序的任何層級任何位置。在服務器端, 在較的低層面,緩存
可能用於存儲基礎數據,例如從數據庫中取出的最新文章列表;在較高的層面,緩存可能
用於存儲一段或整個Web 頁面,例如最新文章的渲染結果。在客戶端,HTTP 緩存 可能用
於將最近訪問的頁面內容存儲到瀏覽器緩存中。
Yii支持數據緩存,片段緩存,頁面緩存,HTTP 緩存等緩存機制。
緩存的設置
一般而言,我們的緩存組件配置在commonconfigmain.php文件中
‘class’配置緩存的種類
‘classPath’配置緩存的路徑,默認的緩存路徑是@appruntimecache目錄下,
如果要修改緩存的路徑,配置如上修改cachePath即可。
緩存的類別
Yii 支持一系列緩存存儲器,概況如下:
文件緩存
片段緩存
頁面緩存
HTTP緩存
緩存操作
設置組件 $cache=Yii::$app->cache;
添加緩存 $cache->add(‘name’,’value’);
設置緩存 $cache->set($key,$value,時間);
添加多個緩存$cache->madd([‘nameone’=>’valueone’,’nameone’=>’valuetwo’]);
讀取緩存 $cache->get(‘name’);
讀取多個緩存$cache->mget([‘nameone’,’nametwo’]);
判斷緩存是否存在 $cache=>exists(‘name’);
刪除緩存 $cache->delete(‘name’);
刪除全部緩存 $cache->flush();
文件緩存
數據緩存是指將一些 PHP 變量存儲到緩存中,使用時再從緩存中取回。它也是更高級緩存
特性的基礎,例如查詢緩存和內容緩存。
DbCache 數據表緩存
打開 common/config/main.php 文件,修改如下。
Redis介紹
Redis介紹:
Remote Dictionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統。
它通常被稱為數據結構服務器,因為值(value)可以是字符串(String), 哈希(Map), 列表
(list), 集合(sets) 和有序集合(sorted sets)等類型。
特點:
1.完全開源免費
2.支持數據持久化,可以將內存中的數據保存在磁盤中,重啟時可再次加載使用
3.同時提供list,set,zset,hash等數據格式儲存
4.支持數具備份主從模式
Redis緩存設置
打開 common/config/main.php 文件,修改如下。
使用方法如同其他cache方法一樣
片段緩存
片段緩存指的是緩存頁面內容中的某個片段。
以上代碼緩存內容最多一小時,如果未設置默認為0,永不過期。
緩存依賴
和數據緩存一樣,片段緩存的內容一樣可以設置緩存依賴。例如一段被緩存的文章,是否
重新緩存取決於它是否被修改過。
變化
緩存的內容可能需要根據一些參數的更改而變化。例如一個 Web 應用支持多語言,同一
段視圖代碼也許需要生成多個語言的內容。因此可以設置緩存根據應用當前語言而變化。
開關
有時你可能只想在特定條件下開啟片段緩存。例如,一個顯示表單的頁面,可能只需要在
初次請求時緩存表單(通過 GET 請求)。隨後請求所顯示(通過 POST 請求)的表單不該
使用緩存,因為此時表單中可能包含用戶輸入內容。鑑於此種情況,可以使用
[[yiiwidgetsFragmentCache::enabled|enabled]] 選項來指定緩存開關,如下所示:
緩存嵌套
片段緩存可以被嵌套使用。一個片段緩存可以被另一個包裹。例如,評論被緩存在裡層,
同時整個評論的片段又被緩存在外層的文章中。以下代碼展示了片段緩存的嵌套使用:
頁面緩存
頁面緩存指的是在服務器端緩存整個頁面的內容。隨後當同一個頁面被請求時,內容將從緩存中取
出,而不是重新生成。
右邊代碼表示只在
index操作時啟用,而
頁面最多被緩存60秒。
查詢緩存
查詢緩存是一個建立在數據緩存之上的特殊緩存特性。它用於緩存數據庫查詢的結果。
查詢緩存需要一個數據庫連接和一個有效cache組件方法,
可用於ActiveRecord 和DAO如下:
Yii緩存特性
由於所有這些緩存組件都繼承自基類 yiicachingCache,我們可以在這些緩存間進行平滑
切換而無須修改緩存使用代碼。
當使用key來緩存變量時,確保這個key是當前應用程序中唯一的。這個key並不需要在不
同的應用中也具備唯一性,因為緩存組件能夠區別不同的應用。
一些緩存存儲,比如 MemCache, APC, 支持通過批處理模式獲取多個緩存值,這將減少緩
存數據讀取負載。名為 mget() 的方法用來提供該功能。即便底層的緩存存儲並不支持該功
能,mget() 仍將模擬實現它。
緩存可被用於應用程序的不同級別上。在最低級別,我們使用緩存保存一個數據片段,
比如一個變量,我們稱之為數據緩存(data caching)。下一級別,我們保存由視圖腳本的
一部分所生成的頁面片段。在最高級別,我們保存整個的頁面在緩存中。
為了從緩存中刪除一個數據,可以調用 delete(); 要清除整個緩存,調用 flush() 方法同時
也將清空共用該緩存的其他應用程序的緩存數據,所以需要額外小心。
緩存debug測試
配置方法設置於configmain調適
查看是否有緩存
方法一:看緩存文件
先關閉頁面緩存,刪除runtime/cache下的所有緩存,刷新頁面,觀察生成了幾個緩存文件。
然後打開頁面緩存,再次刷新頁面,觀察是否有更多的緩存文件生成,如果有,緩存成功。
方法二:看調試信息
如果你有打開debug面板,那麼在你訪問的頁面緩存生效期間,不管刷新幾次頁面,下方的debug面板上的參數(頁面加載時間/time,
數據庫查詢時間/DB time,等)是不會變化的,因為這個值是被緩存頁面的信息。
如果沒有緩存,這些參數是會有波動。
2、如果緩存成功,文件會是runtime/cache目錄下
3、緩存文件不能自定義,這個是系統底層做的事,不用你干預,你只管用就行了。
你能定義的是緩存的變量名,如果你只需緩存部分數據,寫緩存$cache->set($key, $data),讀緩存$data = $cache->get($key);
至於緩存文件具體在哪個位置,與你無關。
比如你存¥100到支付寶,不用關心這¥100具體在放哪了,只要賬號密碼對了,在哪都能買¥100的東西。

More Related Content

What's hot

构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构HonestQiao
 
百度分布式数据库 刘斌 Sacc2010
百度分布式数据库 刘斌 Sacc2010百度分布式数据库 刘斌 Sacc2010
百度分布式数据库 刘斌 Sacc2010Chuanying Du
 
Jkcn MySQLDB 架构
Jkcn MySQLDB 架构Jkcn MySQLDB 架构
Jkcn MySQLDB 架构Louis liu
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttcareyouok
 
檔案壓縮
檔案壓縮檔案壓縮
檔案壓縮DBLab
 
浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用powerzhuye
 
浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用kevin zhang
 
高可用可扩展数据层 - MySQL架构实践
高可用可扩展数据层 - MySQL架构实践高可用可扩展数据层 - MySQL架构实践
高可用可扩展数据层 - MySQL架构实践Sky Jian
 
Exadata那点事
Exadata那点事Exadata那点事
Exadata那点事freezr
 
浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华zhuozhe
 
OTN软硬件结合数据库解决方案
OTN软硬件结合数据库解决方案OTN软硬件结合数据库解决方案
OTN软硬件结合数据库解决方案freezr
 
哈佛公開課_E-75 建構動態網站 第2講 PHP(續)
哈佛公開課_E-75 建構動態網站 第2講 PHP(續)哈佛公開課_E-75 建構動態網站 第2講 PHP(續)
哈佛公開課_E-75 建構動態網站 第2講 PHP(續)奕孝 陳
 
Hbase架构简介、实践
Hbase架构简介、实践Hbase架构简介、实践
Hbase架构简介、实践Li Map
 
数据库高可用架构
数据库高可用架构数据库高可用架构
数据库高可用架构freezr
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化XiaoJun Hong
 

What's hot (17)

构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构
 
百度分布式数据库 刘斌 Sacc2010
百度分布式数据库 刘斌 Sacc2010百度分布式数据库 刘斌 Sacc2010
百度分布式数据库 刘斌 Sacc2010
 
Jkcn MySQLDB 架构
Jkcn MySQLDB 架构Jkcn MySQLDB 架构
Jkcn MySQLDB 架构
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc
 
檔案壓縮
檔案壓縮檔案壓縮
檔案壓縮
 
浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用
 
浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用浅谈网站架构中缓存的应用
浅谈网站架构中缓存的应用
 
高可用可扩展数据层 - MySQL架构实践
高可用可扩展数据层 - MySQL架构实践高可用可扩展数据层 - MySQL架构实践
高可用可扩展数据层 - MySQL架构实践
 
Web缓存加速
Web缓存加速Web缓存加速
Web缓存加速
 
Exadata那点事
Exadata那点事Exadata那点事
Exadata那点事
 
浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华
 
OTN软硬件结合数据库解决方案
OTN软硬件结合数据库解决方案OTN软硬件结合数据库解决方案
OTN软硬件结合数据库解决方案
 
哈佛公開課_E-75 建構動態網站 第2講 PHP(續)
哈佛公開課_E-75 建構動態網站 第2講 PHP(續)哈佛公開課_E-75 建構動態網站 第2講 PHP(續)
哈佛公開課_E-75 建構動態網站 第2講 PHP(續)
 
Http 缓存
Http 缓存Http 缓存
Http 缓存
 
Hbase架构简介、实践
Hbase架构简介、实践Hbase架构简介、实践
Hbase架构简介、实践
 
数据库高可用架构
数据库高可用架构数据库高可用架构
数据库高可用架构
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
 

Similar to Cache 20170407

腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨George Ang
 
腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨topgeek
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践self study
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践rewinx
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践Frank Cai
 
客户端存储与计算
客户端存储与计算客户端存储与计算
客户端存储与计算xiaotao ning
 
2018 普安 EonStor GSe Pro 产品线介绍 (簡中版)
2018 普安 EonStor GSe Pro 产品线介绍 (簡中版)2018 普安 EonStor GSe Pro 产品线介绍 (簡中版)
2018 普安 EonStor GSe Pro 产品线介绍 (簡中版)infortrendgroup
 
高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用redhat9
 
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用redhat9
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡cachowu
 
使用Nginx轻松实现开源负载均衡——对外版
使用Nginx轻松实现开源负载均衡——对外版使用Nginx轻松实现开源负载均衡——对外版
使用Nginx轻松实现开源负载均衡——对外版pigso
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡guest2d0fe3
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡Cary Yang
 
大型网站架构设计
大型网站架构设计大型网站架构设计
大型网站架构设计notes4mark
 
Web dev road map part one
Web dev road map part oneWeb dev road map part one
Web dev road map part one安 闫
 
云存储方案 -技术需求
云存储方案 -技术需求云存储方案 -技术需求
云存储方案 -技术需求taotao1240
 
构建基于Lamp的网站架构
构建基于Lamp的网站架构构建基于Lamp的网站架构
构建基于Lamp的网站架构Cosey Lee
 
缓存技术浅谈
缓存技术浅谈缓存技术浅谈
缓存技术浅谈Robbin Fan
 
全新 Veeam Availability Suite v9包括 Veeam Backup & Replication 和 Veeam ONE 備份解決方...
全新 Veeam Availability Suite v9包括 Veeam Backup & Replication 和 Veeam ONE 備份解決方...全新 Veeam Availability Suite v9包括 Veeam Backup & Replication 和 Veeam ONE 備份解決方...
全新 Veeam Availability Suite v9包括 Veeam Backup & Replication 和 Veeam ONE 備份解決方...Cheer Chain Enterprise Co., Ltd.
 

Similar to Cache 20170407 (20)

腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨
 
腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
 
客户端存储与计算
客户端存储与计算客户端存储与计算
客户端存储与计算
 
2018 普安 EonStor GSe Pro 产品线介绍 (簡中版)
2018 普安 EonStor GSe Pro 产品线介绍 (簡中版)2018 普安 EonStor GSe Pro 产品线介绍 (簡中版)
2018 普安 EonStor GSe Pro 产品线介绍 (簡中版)
 
高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用
 
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
 
使用Nginx轻松实现开源负载均衡——对外版
使用Nginx轻松实现开源负载均衡——对外版使用Nginx轻松实现开源负载均衡——对外版
使用Nginx轻松实现开源负载均衡——对外版
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
 
大型网站架构设计
大型网站架构设计大型网站架构设计
大型网站架构设计
 
Web dev road map part one
Web dev road map part oneWeb dev road map part one
Web dev road map part one
 
云存储方案 -技术需求
云存储方案 -技术需求云存储方案 -技术需求
云存储方案 -技术需求
 
构建基于Lamp的网站架构
构建基于Lamp的网站架构构建基于Lamp的网站架构
构建基于Lamp的网站架构
 
Dfs ning
Dfs ningDfs ning
Dfs ning
 
缓存技术浅谈
缓存技术浅谈缓存技术浅谈
缓存技术浅谈
 
全新 Veeam Availability Suite v9包括 Veeam Backup & Replication 和 Veeam ONE 備份解決方...
全新 Veeam Availability Suite v9包括 Veeam Backup & Replication 和 Veeam ONE 備份解決方...全新 Veeam Availability Suite v9包括 Veeam Backup & Replication 和 Veeam ONE 備份解決方...
全新 Veeam Availability Suite v9包括 Veeam Backup & Replication 和 Veeam ONE 備份解決方...
 

Cache 20170407