緩存機制

2024-07-17 23:44 更新

為了獲取更多最新內(nèi)容及功能更新,請直接訪問我們的首頁以查看DzzOffice筆記的最新地址。

DzzOffice支持兩種緩存機制:內(nèi)存緩存和內(nèi)置緩存。通過配置緩存,可以極大的提高DzzOffice的并發(fā)和承載能力。

系統(tǒng)內(nèi)置緩存

在系統(tǒng)配置文件/config/config.php中,存在以下一行代碼:

$_config['cache']['type'] = 'sql';

這就是DzzOffice系統(tǒng)內(nèi)置的緩存方式,如填寫為'sql',則使用數(shù)據(jù)庫緩存;如填寫為'file',則使用文件緩存。建議設(shè)置為'sql'以使用數(shù)據(jù)庫緩存,因為其速度相較于文件緩存更快。當這個配置改成'file'時,系統(tǒng)生成的緩存將被寫入文件中。緩存文件存儲在"/data/cache"目錄下。當服務(wù)器承受較高MySQL壓力時,可通過file的文件緩存機制緩解MySQL的壓力,通過服務(wù)器IO換取MySQL的讀寫頻率,降低MySQL的壓力。

緩存更新原理:


緩存的工作原理:


在開發(fā)過程中,當調(diào)用緩存時,只需確認所需的緩存名稱,然后調(diào)用

loadcache($cachenames, $force)

即可獲取先前保存的緩存內(nèi)容。

內(nèi)存緩存

引入緩存層的目的是為了解決MYSQL自身在高并發(fā)處理方面的性能瓶頸。目前,緩存層采用主流的Key-Value對形式。市場上有很多內(nèi)存級緩存產(chǎn)品。DzzOffice目前支持的內(nèi)存優(yōu)化接口包括Memcache、eAccelerator、Alternative PHP Cache(APC)、Xcache和Redis五種。系統(tǒng)將根據(jù)當前服務(wù)器環(huán)境依次選擇合適的接口。在單服務(wù)器環(huán)境中,推薦使用APC;在多服務(wù)器環(huán)境中,推薦使用Redis或Memcache。緩存可以通過配置/config/config.php來啟用,配置選項如下:

$_config['memory']['prefix'] = 'dzzoffice_'; $_config['memory']['redis']['server'] = ''; // redis 服務(wù)器地址 $_config['memory']['redis']['port'] = 6379; // redis 服務(wù)器端口 $_config['memory']['redis']['pconnect'] = 1; // redis 是否長久連接 $_config['memory']['redis']['timeout'] = 0; // redis 服務(wù)器連接超時 $_config['memory']['redis']['serializer'] = 1; // redis::SERIALIZER選項 $_config['memory']['memcache']['server'] = ''; // memcache 服務(wù)器地址 $_config['memory']['memcache']['port'] = 11211; // memcache 服務(wù)器端口 $_config['memory']['memcache']['pconnect'] = 1; // memcache 是否長久連接 $_config['memory']['memcache']['timeout'] = 1; // memcache 服務(wù)器連接超時 $_config['memory']['apc'] = 0; // 啟動對 apc 的支持 $_config['memory']['xcache'] = 0; // 啟動對 xcache 的支持 $_config['memory']['eaccelerator'] = 0; // 啟動對 eaccelerator 的支持

數(shù)據(jù)層是以表為單位的類文件,所有表類均繼承自dzz_table基類,基類實現(xiàn)了與緩存操作相關(guān)的函數(shù)。理論上,所有數(shù)據(jù)表均可進行緩存。

dzz_table基類中緩存機制的實現(xiàn)

protected $_pre_cache_key; //緩存主鍵名前綴,為空時表示此表不支持緩存 protected $_cache_ttl; //緩存時間,以秒為單位,0表示永久或相關(guān)配置文件中的默認值

dzz_table基類中緩存機制的方法

  1. 將一個變量緩存到緩存中,如果KEY已經(jīng)存在,則用新值覆蓋
store_cache($id, $data, $cache_ttl = null, $pre_cache_key = null)
  1. 獲取指定KEY的緩存數(shù)據(jù)
fetch_cache($ids, $pre_cache_key = null)
  1. 清除指定KEY的緩存
clear_cache($ids, $pre_cache_key = null)
  1. 更新一個已存在的KEY,只更新修改的字段
update_cache($id, $data, $cache_ttl = null, $pre_cache_key = null)
  1. 批量更新緩存,只更新已存在KEY的指定修改的字段
update_batch_cache($ids, $data, $cache_ttl = null, $pre_cache_key = null)
  1. 重置已經(jīng)存在的KEY的值
reset_cache($ids, $pre_cache_key = null)
  1. 累加緩存數(shù)據(jù)中某字段的值
increase_cache($ids, $data, $cache_ttl = null, $pre_cache_key = null)

在數(shù)據(jù)表類中添加以下參數(shù)以啟用緩存,例如:

public function __construct() { $this->_table = 'app_open'; $this->_pk = 'extid'; $this->_pre_cache_key = 'app_open_'; //緩存主鍵名前綴,為空時表示此表不支持緩存 $this->_cache_ttl =0; //緩存時間,以秒為單位,0表示永久或相關(guān)配置文件中的默認值 parent::__construct(); }


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號