黑马lavarel教程---9、缓存操作
黑馬lavarel教程---9、緩存操作
一、總結(jié)
一句話總結(jié):
legend2項(xiàng)目中自己寫的哪些文件操作都可以通過這里的緩存實(shí)現(xiàn),簡單方便
?
1、lavarel中如何使用后端主流的緩存如 Memcached 和 Redis 等?
在配置文件 config/cache.php中指定緩存驅(qū)動(dòng)即可
?
2、系統(tǒng)默認(rèn)是使用文件緩存,其緩存文件存儲(chǔ)的位置位于哪里?
storage/framework/cache/data
?
3、如何用緩存做計(jì)數(shù)器?
increment 和 decrement 方法
increment 和 decrement 方法可用于調(diào)整緩存中的整型數(shù)值。這兩個(gè)方法都可以接收第二個(gè)參數(shù)來指明緩存項(xiàng)數(shù)值增加和減少的數(shù)目:一般會(huì)用作計(jì)數(shù)器。 Cache::increment('key'); Cache::increment('key', $amount); Cache::decrement('key'); Cache::decrement('key', $amount);?
?
4、緩存經(jīng)常使用的方法有哪些?
add/put、get、has、forget、flush、remember
?
?
?
二、緩存操作
Laravel 為不同的緩存系統(tǒng)提供了統(tǒng)一的 API。緩存配置位于 config/cache.php。在該文件中你可以指定在應(yīng)用中默認(rèn)使用哪個(gè)緩存驅(qū)動(dòng)。Laravel 目前支持主流的緩存后端如 Memcached 和 Redis 等。
主要方法:
Cache::put()?
Cache::get()?
Cache::add()
Cache::pull()
Cache::forever()
Cache::forget()
Cache::has()
系統(tǒng)默認(rèn)是使用文件緩存,其緩存文件存儲(chǔ)的位置位于(storage/framework/cache/data):
?
?
?
?
?
1、設(shè)置緩存
語法:Cache::put('key', 'value', $minutes);注意:如果該鍵已經(jīng)存在,則直接覆蓋原來的值,有效期必須設(shè)置,單位是分鐘
?
?
語法:Cache::add('key', 'value', $minutes);add 方法只會(huì)在緩存項(xiàng)不存在的情況下添加數(shù)據(jù)到緩存,如果數(shù)據(jù)被成功添加到緩存返回 true,否則,返回false:
?
永久存儲(chǔ)數(shù)據(jù)
forever 方法用于持久化存儲(chǔ)數(shù)據(jù)到緩存,這些值必須通過 forget 方法手動(dòng)從緩存中移除:
Cache::forever('key', 'value');????????????????? 永久存儲(chǔ)并不是真的永久,只不過其截至的時(shí)間是比較大的值(到2286年)
2、獲取緩存數(shù)據(jù)
Cache 門面的 get 方法用于從緩存中獲取緩存項(xiàng),如果緩存項(xiàng)不存在,返回 null。如果需要的話你可以傳遞第二個(gè)參數(shù)到 get 方法指定緩存項(xiàng)不存在時(shí)返回的自定義默認(rèn)值:
$value = Cache::get('key');??????????????????????? 獲取指定的key值
$value = Cache::get('key', 'default');???? 獲取指定的key值,如果不存在,則使用默認(rèn)值
可以傳遞一個(gè)匿名函數(shù)作為默認(rèn)值,如果緩存項(xiàng)不存在的話閉包的結(jié)果將會(huì)被返回。傳遞匿名函數(shù)允許你可以從數(shù)據(jù)庫或其它外部服務(wù)獲取默認(rèn)值:
$value = Cache::get('key', function() {
??? return DB::table(...)->get();
});
檢查緩存項(xiàng)是否存在
has 方法用于判斷緩存項(xiàng)是否存在:
if (Cache::has('key')) {
??? //
}
3、刪除緩存數(shù)據(jù)
語法:
$value = Cache::pull('key'); 從緩存中獲取緩存項(xiàng)然后刪除,如果緩存項(xiàng)不存在的話返回null,一般設(shè)置一次性的存儲(chǔ)的數(shù)據(jù)
Cache::forget('key'); 使用forget 方法從緩存中移除緩存項(xiàng)數(shù)據(jù)
Cache::flush();使用 flush 方法清除所有緩存:并且刪除對(duì)應(yīng)的目錄
?
4、緩存數(shù)值增加/減少
increment 和 decrement 方法可用于調(diào)整緩存中的整型數(shù)值。這兩個(gè)方法都可以接收第二個(gè)參數(shù)來指明緩存項(xiàng)數(shù)值增加和減少的數(shù)目:一般會(huì)用作計(jì)數(shù)器。
?
Cache::increment('key');
Cache::increment('key', $amount);
Cache::decrement('key');
Cache::decrement('key', $amount);
5、獲取并存儲(chǔ)
有時(shí)候你可能想要獲取緩存項(xiàng),但如果請(qǐng)求的緩存項(xiàng)不存在時(shí)給它存儲(chǔ)一個(gè)默認(rèn)值。例如,你可能想要從緩存中獲取所有用戶,或者如果它們不存在的話,從數(shù)據(jù)庫獲取它們并將其添加到緩存中,你可以通過使用 Cache::remember 方法實(shí)現(xiàn):
?
$value = Cache::remember('users', $minutes, function() {
??? return DB::table('users')->get();
});
如果緩存項(xiàng)不存在,傳遞給 remember 方法的閉包被執(zhí)行并且將結(jié)果存放到緩存中。
?
如果獲取users值是不存在,則可以通過后續(xù)的回調(diào)代碼去執(zhí)行對(duì)應(yīng)的操作獲取其值,并返回,同時(shí)會(huì)設(shè)置一個(gè)指定有效期的緩存,方便下次直接使用。比較典型的操作就是在獲取微信的accesstoken的時(shí)候可以使用。原因是accesstoken本身一天只有2000次的配額,而其有7200s的有效期,在有效期內(nèi)可以不用去刷新請(qǐng)求。
?
還可以聯(lián)合 remember 和 forever 方法:
$value = Cache::rememberForever('users', function() {
??? return DB::table('users')->get();
});
?
①創(chuàng)建需要的路由
?
?
?
?
②創(chuàng)建test19方法實(shí)現(xiàn)相關(guān)代碼操作
如果需要使用cache提供的方法,則需要先引入
?
?
?
?
?
?
?
?
?
?
經(jīng)常使用的:add/put、get、has、forget、flush、remember。
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/Renyi-Fan/p/11585993.html
總結(jié)
以上是生活随笔為你收集整理的黑马lavarel教程---9、缓存操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黑马lavarel教程---8、sess
- 下一篇: 【NOI2015】荷马史诗