中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

Laravel框架中實現使用阿里云ACE緩存服務
來源:易賢網 閱讀:964 次 日期:2015-02-11 14:22:12
溫馨提示:易賢網小編為您整理了“Laravel框架中實現使用阿里云ACE緩存服務”,方便廣大網友查閱!

這篇文章主要介紹了Laravel框架中實現使用阿里云ACE緩存服務,本文擴展了一個ACE緩存驅動,以便使用阿里云ACE緩存服務,需要的朋友可以參考下

之前我寫了一篇在 Laravel 4 框架中使用阿里云 OCS 緩存的文章,介紹了如何通過擴展 Laravel 4 來支持需要 SASL 認證的阿里云 OCS 緩存服務。有網友問我,ACE 的緩存怎么在 Laravel 4 中使用。我本來覺得應該可以完全用相同的辦法,后來自己嘗試的時候才發現,ACE 的緩存差別非常大。所以再寫一篇,介紹一下如何在 Laravel 框架中使用阿里云 ACE 的緩存服務。

如何擴展 Laravel 的緩存驅動

在 Laravel 4 中使用 Cache::get($key), Cache::put($key, $value, $minutes) 這樣的代碼時,實際上是訪問 實例化的 Illuminate\Cache\Repository, 所以我們通過 Cache::extend 方法擴展自定義緩存驅動時,同樣應該返回一個 Illuminate\Cache\Repository 對象。

Laravel 4 內置的 Memcached 緩存驅動,實現的流程是這樣的:

1.創建一個標準 Memcached 類的新對象

2.用上一步創建的 Memcached 對象創建一個實現了 Illuminate\Cache\StoreInterface 接口的 Illuminate\Cache\MemecachedStore 對象。

3.用上一步創建的 MemcachedStore 對象創建一個 Illuminate\Cache\Repository 對象。

所以我們在擴展自定義的 Cache 驅動時,根據自己的情況,選擇上面的某一個步驟自定義,最終還是要返回 Illuminate\Cache\Repository 對象。比如上一篇文章中,我就是在第一步,創建標準 Memcached 對象之后,通過 setSaslAuthData() 方法設定 OCS 需要的用戶名密碼。之后第2步、第3步并不需要自定義。

ACE 的緩存服務

阿里云 ACE 的緩存服務,跟默認的 OCS 有所不同:

1.通過 Alibaba::Cache() 方法獲得 Cache 對象。

2.ACE 的 Cache 對象與標準 Memcached 對象不同,支持的方法有限。

所以,這次第一步得到的不是標準 Memcached 對象,因此就不能創建 Illuminate\Cache\MemcachedStore 對象。需要自己實現 Illuminate\Cache\StoreInterface 接口。

在控制臺創建了緩存空間之后,會有唯一的“緩存空間名稱”,然后通過 Alibaba::Cache('緩存空間名稱') 來獲得 Cache 對象。以下就是實現 ACE 緩存服務驅動的步驟:

1.為了方便修改,我在配置文件 app/config/cache.php 中增加一個名為 ace 的鍵,存儲緩存空間名稱。

2.然后創建一個 AceMemcachedStore 類,這個類實現 Illuminate\Cache\StoreInterface 接口。

3.最后,用 AceMemcachedStore 對象來創建 Illuminate\Cache\Repository 對象。

下面來看具體的代碼實現:

編碼實現自定義 ACE 緩存驅動:

第一步,修改配置文件。打開 app/config/cache.php,在最后增加一行:

代碼如下:

// 指定緩存空間名稱

'ace' => 'lblog-cache',

第二步,為了方便,把自己的類文件放在 src/Ace 目錄下,使用 Ace 作為命名空間。

1.在 app 的同級目錄創建目錄 src/Ace。

2.打開 composer.json 文件,修改 autoload 節,在 classmap 下面用 psr-0 或者 psr-4 來自動加載文件。

代碼如下:

"autoload": {

"classmap": [

// autoload class

],

"psr-4": {

"Ace\\": "src/Ace"

}

},

創建 src/Ace/AceMemcachedStore.php 文件,代碼如下:

代碼如下:

namespace Ace;

use Illuminate\Cache\StoreInterface;

use Illuminate\Cache\TaggableStore;

class AceMemcachedStore extends TaggableStore implements StoreInterface {

protected $memcached;

protected $prefix;

public function __construct($space, $prefix = '') {

$this->memcached = \Alibaba::Cache($space);

$this->prefix = strlen($prefix) > 0 ? $prefix.':' : '';

}

/**

* Retrieve an item from the cache by key.

*

* @param string $key

* @return mixed

*/

public function get($key)

{

$value = $this->memcached->get($this->prefix.$key);

if(is_bool($value) && $value === false) {

return null;

}

return $value;

}

/**

* Store an item in the cache for a given number of minutes.

*

* @param string $key

* @param mixed $value

* @param int $minutes

* @return boolean

*/

public function put($key, $value, $minutes)

{

return $this->memcached->set($this->prefix.$key, $value, $minutes);

}

/**

* Increment the value of an item in the cache.

*

* @param string $key

* @param mixed $value

* @return boolean

*/

public function increment($key, $value = 1)

{

return $this->memcached->increment($this->prefix.$key, $value);

}

/**

* Decrement the value of an item in the cache.

*

* @param string $key

* @param mixed $value

* @return boolean

*/

public function decrement($key, $value = 1)

{

return $this->memcached->decrement($this->prefix.$key, $value);

}

/**

* Store an item in the cache indefinitely.

*

* @param string $key

* @param mixed $value

* @return boolean

*/

public function forever($key, $value)

{

return $this->memcached->set($key, $value, 0);

}

/**

* Remove an item from the cache.

*

* @param string $key

* @return boolean

*/

public function forget($key)

{

return $this->memcached->delete($this->prefix.$key);

}

/**

* Remove all items from the cache.

*

* @return void

*/

public function flush()

{

//$this->memcached->flush();

return false;

}

public function getMemcached()

{

return $this->memcached;

}

/**

* Get the cache key prefix.

*

* @return string

*/

public function getPrefix()

{

return $this->prefix;

}

}

這段代碼比較簡單,不過要特別注意一下 get($key) 方法的實現。標準 memcached 以及 ACE 的緩存對象的 get 方法都是key有效時返回對應的緩存值,否則返回false,而在 Laravel 4 中,是通過檢測 get 方法返回的是否 null 來做判斷,所以這里需要處理一下,返回緩存值或者null。

AceMemcachedStore類已經創建好了,接下來在 bootstrap/start.php 文件中擴展 Cache:

打開 bootstrap/start.php, 添加以下代碼:

代碼如下:

// 擴展名為 ace 的緩存驅動

Cache::extend('ace', function($app)

{

// 從 app/config/cache.php 文件中讀取 "ace" 的值

$space = $app['config']['cache.ace'];

// 從 app/config/cache.php 文件中讀取 "prefix" 的值

$prefix = $app['config']['cache.prefix'];

// 創建 \Ace\AceMemcachedStore 對象

$store = new \Ace\AceMemcachedStore($space, $prefix);

// 創建并返回 \Illuminate\Cache\Repository 對象

return new \Illuminate\Cache\Repository($store);

});

指定系統使用 'ace' 作為緩存驅動:打開 app/config/cache.php,找到 'driver' => '...' 所在行,修改為:'driver' => 'ace'.

使用和限制

通過以上操作,就可以在 Laravel 4 中調用 ACE 的緩存服務,使用上與平常的用法完全一致,比如:

代碼如下:

// 添加緩存,有效時間10分鐘

Cache::put('my_key', 'my value', 10);

// 讀取緩存

Cache::get('my_key')

// 判斷緩存是否存在

Cache::has('my_key')

// 數據查詢緩存

$users = DB::table('users')->remember(10)->get();

但是由于 ACE 緩存對象本身的限制,只能刪除指定 key 的緩存對象,不能遍歷、全量操作,因此 Cache::flush() 方法就不能使用。在上面的 AceMemcachedStore 對象中,flush 方法沒有做任何操作,只是返回 false.

更多信息請查看IT技術專欄

更多信息請查看腳本欄目
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国产精品美女| 欧美一区二区三区精品 | 老色鬼久久亚洲一区二区| 亚洲一区二区在线观看视频| 中文亚洲字幕| 久久综合伊人77777| 国产日本欧美一区二区三区| 国产一区av在线| 欧美一级片在线播放| 欧美日韩国产精品| 亚洲毛片在线看| 久久福利视频导航| 国产一区二区三区免费观看| 精品成人一区| 欧美区国产区| 亚洲欧洲三级| 美女露胸一区二区三区| 狠狠色噜噜狠狠色综合久| 国产美女一区二区| 欧美影视一区| 欧美黑人一区二区三区| 亚洲高清资源综合久久精品| 国产一区av在线| 欧美日韩999| 欧美在线日韩| 欧美另类人妖| 一区在线视频| 性色av一区二区三区红粉影视| 久久这里有精品视频| 国产精品xnxxcom| 激情亚洲网站| 性欧美暴力猛交69hd| 欧美乱妇高清无乱码| 伊人婷婷欧美激情| 欧美在线三级| 国产精品最新自拍| 亚洲最新合集| 欧美高清在线视频观看不卡| 国模精品娜娜一二三区| 午夜视频在线观看一区二区三区| 欧美啪啪一区| 亚洲国产精品黑人久久久| 久久久久免费| 国产综合久久久久影院| 欧美一二三视频| 国产精品五月天| 亚洲一区二区视频在线| 欧美手机在线| 亚洲午夜精品福利| 国产午夜久久| 亚洲制服av| 国产精品福利久久久| 99国产麻豆精品| 欧美激情综合色| 亚洲精品一区在线观看| 牛牛国产精品| 亚洲国产网站| 欧美成人午夜免费视在线看片| 伊人久久大香线| 老司机精品导航| 国产农村妇女毛片精品久久莱园子| 99精品视频一区| 欧美日韩一二三区| 亚洲一区中文| 国产一区二区精品| 欧美有码视频| 激情六月婷婷久久| 欧美成人一区二免费视频软件| 最新中文字幕亚洲| 欧美噜噜久久久xxx| 一区二区三区国产| 国产精品视频网址| 欧美专区第一页| 136国产福利精品导航| 欧美成人午夜| 亚洲午夜激情网站| 国产人妖伪娘一区91| 久久婷婷人人澡人人喊人人爽| 亚洲第一视频网站| 欧美日韩中文字幕日韩欧美| 亚洲中字黄色| …久久精品99久久香蕉国产| 欧美精品一级| 欧美在线播放高清精品| 亚洲成人在线网| 欧美综合国产精品久久丁香| 在线视频精品一区| 国产精品一二三视频| 久久精品首页| 99re6热在线精品视频播放速度 | 久久福利视频导航| 亚洲高清自拍| 国产精品久久久久久久第一福利| 久久国产精彩视频| 亚洲裸体俱乐部裸体舞表演av| 国产精品青草久久久久福利99| 久久免费视频这里只有精品| 一本色道久久加勒比精品| 国产亚洲a∨片在线观看| 欧美国产视频一区二区| 亚洲午夜性刺激影院| 影音先锋久久资源网| 国产精品性做久久久久久| 欧美激情第8页| 久久久www| 翔田千里一区二区| 日韩视频三区| 国产一区二区三区四区| 欧美日韩一区在线播放| 老司机精品视频网站| 亚洲一区二区三区免费观看| 欧美人与禽猛交乱配视频| 久久噜噜噜精品国产亚洲综合| 欧美日韩视频在线一区二区 | 国产伦理一区| 欧美精品麻豆| 久久精品三级| 亚洲午夜av| 亚洲精品影院在线观看| 韩国欧美一区| 国产日本欧美一区二区三区| 欧美人与性动交a欧美精品| 久久精品亚洲一区二区三区浴池| 中文日韩在线视频| 亚洲精品免费在线观看| 91久久久国产精品| 亚洲国产一区二区a毛片| 欧美一区二区视频在线观看2020| 亚洲人在线视频| 国产精品免费看| 欧美日韩中文精品| 欧美va亚洲va国产综合| 久久久噜噜噜久久人人看| 精品二区视频| 亚洲精品乱码久久久久久蜜桃91| 欧美深夜影院| 久久超碰97人人做人人爱| 欧美亚洲一区| 国产精品日韩在线播放| 欧美日韩日日骚| 欧美77777| 久久综合一区二区三区| 日韩午夜在线播放| 亚洲美女区一区| 亚洲日本乱码在线观看| 亚洲美女电影在线| 夜夜嗨一区二区| 午夜久久影院| 亚洲免费视频在线观看| 亚洲欧美文学| 亚洲人成在线观看| 欧美日韩一二三区| 猛男gaygay欧美视频| 亚洲砖区区免费| 亚洲欧美综合另类中字| 亚洲精品一区久久久久久| 国产一级久久| 国产综合久久久久久鬼色| 欧美日本成人| 欧美日韩一卡二卡| 国产精品久久久久aaaa樱花| 国产精品久久久999| 欧美女主播在线| 免费人成精品欧美精品| 欧美成人免费在线视频| 欧美日韩1234| 欧美先锋影音| 国产综合18久久久久久| 国产午夜亚洲精品羞羞网站| 亚洲国产精品久久久| 欧美午夜不卡视频| 久久精彩视频| 久久精品99无色码中文字幕| 一本一本久久a久久精品综合麻豆| 亚洲淫性视频| 亚洲成人在线视频网站| 欧美国产精品v| 亚洲福利视频一区二区| 亚洲日本aⅴ片在线观看香蕉| 亚洲精品在线免费观看视频| 99re6热在线精品视频播放速度| 亚洲欧美www| 老鸭窝91久久精品色噜噜导演| 欧美巨乳在线| 国产一区二区精品在线观看| 欧美极品欧美精品欧美视频| 欧美日韩综合久久| 国产精品成人在线| 国产欧美日韩一区二区三区在线观看 | 欧美日韩成人在线播放| 欧美国产在线视频| 国产午夜久久| 久久爱91午夜羞羞| 亚洲视屏在线播放| 欧美一区网站| 欧美久久成人| 欧美日韩国产在线看| 久久天堂av综合合色| 欧美日韩国产在线看| 伊人春色精品|