微擎數(shù)據(jù)庫緩存的增、刪、改和查函數(shù)詳解

函數(shù)所在文件:framework/function/cache.MySQL.func.php

成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、紅安網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、商城網(wǎng)站制作、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為紅安等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

目前微擎的個人真實調(diào)用:

$setting = $this->module['config'];

$aaaaa = $setting['copyright'];

在微擎微信公眾號系統(tǒng)里面可以分為三類緩存:保存到數(shù)據(jù)庫表core_cache中的數(shù)據(jù)庫緩存、保存到文件的文件緩存和memcahe緩存,本教程介紹的是數(shù)據(jù)庫緩存,也是微擎系統(tǒng)配置的默認(rèn)緩存。

因為,處理數(shù)據(jù)庫緩存的函數(shù)相對簡單,所以,phpos微信網(wǎng)把這幾個函數(shù)一起制作成一個教程。因為是對數(shù)據(jù)庫表操作,所以,再怎么操作表,無非就是對表記錄進行插入(增)、刪除、修改和查詢,所以,對應(yīng)著數(shù)據(jù)庫緩存函數(shù)也有插入緩存數(shù)據(jù)、刪除緩存數(shù)據(jù)、修改緩存數(shù)據(jù)和查詢緩存數(shù)據(jù)操作。

在微擎微信公眾號系統(tǒng)里面緩存數(shù)據(jù)都保存到了緩存表core_cache里面,也就是說下面的函數(shù)都是對這個表這進行的增、刪、改和查的操作。

表core_cache:

微擎數(shù)據(jù)庫緩存的增、刪、改和查函數(shù)詳解

一、插入(寫入)緩存數(shù)據(jù)

cache_write($key, $data)函數(shù):這個在本站已經(jīng)有詳細的講解了,這里不再多解釋。

示例

load()->func('cache.mysql');

cache_write('phpos',array('webname'=>'微信開發(fā)','url'=>'phpos.net','title'=>array('微信開發(fā)','微信公眾號')));

結(jié)果:

微擎數(shù)據(jù)庫緩存的增、刪、改和查函數(shù)詳解

二、刪除緩存數(shù)據(jù)

  刪除函數(shù):cache_delete($key)

  此函數(shù)的作用是:刪除core_cache表中的某一條記錄。

  $key 為要刪除的表中字段key的值,例如,刪除phpos記錄,則$key='phpos'。

  這個函數(shù)使用的sql語句是:

DELETE FROM ' . tablename('core_cache') . ' WHERE `key`=:key

  這個參數(shù)$key正是要刪除的條件,所以,只要您傳一個值$key就可以把表中key字段對應(yīng)的記錄刪除掉。

  在這個函數(shù)里面使用了微擎微信公眾號系統(tǒng)封裝的數(shù)據(jù)庫查詢函數(shù)pdo_query($sql, $params),這個函數(shù)類似面向過程里面的mysql_query()執(zhí)行一條sql語句。

示例

刪除字段phpos對應(yīng)的記錄:

load()->func('cache.mysql');

cache_delete('phpos');


三、刪除整個緩存表里面的記錄,或是刪除包含相同名稱的記錄。

  刪除函數(shù):cache_clean($prefix = '')

  上面的函數(shù)是刪除確定的某一條記錄,而本函數(shù)刪除的是整個表或是包含類似phpos:、web:、site:等字段的值的記錄。

  1)如果$prefix為空,則刪除事個core_cache表中的數(shù)據(jù)。

  并且,刪除保存在全局變量$_W中的數(shù)據(jù):

 

        if ($result) {

            unset($_W['cache']);

        }

  其中,$_W['cache']是在文件bootstrap.inc.php里面定義的:

if(!in_array($_W['config']['setting']['cache'], array('mysql', 'file', 'memcache'))) {

    $_W['config']['setting']['cache'] = 'mysql';

}

  這個條件里面的$_W['config']['setting']['cache']是在配置文件data/config.php配置的,默認(rèn)是mysql,表示使用緩存數(shù)據(jù)使用“數(shù)據(jù)庫緩存”。

  2)如果$prefix不空,則刪除與{$prefix}:%匹配的數(shù)據(jù)。

示例:

load()->func('cache.mysql');

cache_clean('website');

cache_clean();


四、查詢緩存數(shù)據(jù)

  1)讀取緩存數(shù)據(jù)函數(shù):

cache_read($key)

  讀取表中某一條緩存數(shù)據(jù)的值:

SELECT `value` FROM ' . tablename('core_cache') . ' WHERE `key`=:key'

  從這個sql語句就可以看出這個函數(shù)查詢的是表core_cache中的鍵為$key對應(yīng)的值,并且,使用函數(shù)iunserializer($val)把查詢出來的序列化的字符串轉(zhuǎn)換成反序列化成字符串。

示例

load()->func('cache.mysql');

print_r(cache_read('website'));

結(jié)果:Array ( [url] => www.phpos.net [title] => 微信網(wǎng) )

  2)查詢所有符合條件的緩存數(shù)據(jù)函數(shù):

cache_search($prefix)

  查詢sql語句:

    $sql = 'SELECT * FROM ' . tablename('core_cache') . ' WHERE `key` LIKE :key';

    $params = array();

    $params[':key'] = "{$prefix}%";

    $rs = pdo_fetchall($sql, $params);

  從上面這段代碼就可以看出這個函數(shù)是查詢字段key的值包含{$prefix}的所有記錄,這里使用了函數(shù)pdo_fetchall()查詢出所有符合條件的記錄。

  最后,返回的是$result,也是一個數(shù)組。

示例

load()->func('cache.mysql');

print_r(cache_search('website'));

結(jié)果:Array ( [website] => Array ( [url] => www.phpos.net [title] => 微信網(wǎng) ) )

五、更新緩存數(shù)據(jù)

  在這個文件cache.mysql.func.php里面,我們并沒有發(fā)現(xiàn)更新緩存數(shù)據(jù),難道不能更新嗎?其實,寫數(shù)據(jù)函數(shù)cache_write()里面在調(diào)用函數(shù)pdo_insert('core_cache', $record, true)時,使用了插入數(shù)據(jù)函數(shù)的第三個參數(shù)true,如果使用這個參數(shù),使用replace into語句插入數(shù)據(jù),這條sql語句,會判斷一下表中是否存在某一數(shù)據(jù),如果存在則刪除之,然后,再把要插入表的數(shù)據(jù)插入到表中。

所以,其實,這個寫入數(shù)據(jù)函數(shù)本身就有更新數(shù)據(jù)的功能,所以,在這個文件里面并沒有單獨定義“更新”緩存數(shù)據(jù)。

網(wǎng)站欄目:微擎數(shù)據(jù)庫緩存的增、刪、改和查函數(shù)詳解
網(wǎng)頁URL:http://bm7419.com/article12/jjcogc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站建設(shè)企業(yè)網(wǎng)站制作、營銷型網(wǎng)站建設(shè)、用戶體驗手機網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計