在yii中使用memcache

2022-08-17 00:06:17 字數 2508 閱讀 1334

yii中可以很方便的使用memcache一.配置

在main.php的components中加入cache配置

[php]view plain

copy

array

(  'components'

=>

array

(  'cache'

=>

array

(  'class'

=>

'cmemcache'

,  'servers'

=>

array

(  array

(  'host'

=>

'server1'

,  'port'

=>11211,  

'weight'

=>60,  

),  

array

(  'host'

=>

'server2'

,  'port'

=>11211,  

'weight'

=>40,  

),  

),  

),  

),  

)  說明:

1)class指明所有快取類,cmemcache即為memcache

2) 當要使用多個cache輪詢時,可以給每個cache配權重(weight)。如果只有乙個cache,不加這個配置就可以了。

二.使用

呼叫memcache的方法也很簡單

[php]view plain

copy

$key

= 'people'

;   

$value

= json_encode(

array

('name'

=>

'ball'

, 'age'

=>

'male'

));   

$expire

= 10;   

, $value

, $expire

);   

);   

($key

);  

更多api請參閱yii手冊cmemcache部分。

三.問題

當你統一使用yii的擴充套件對memcache進行訪問時,不會有什麼問題。但現實中會有這麼一種情況:你在使用yii開發後台,但前台的同學並未用yii,而是使用了原生的

memcache api對資料進行操作。這時會遇到一些問題。

如上文二中的例子,你會發現,如果使用原生的

memcache api,

memcache::get,用people作key是取不到值的!

原因是,yii的set對key和value都做了處理。預設情況下,對key加字首並做md5變換,對value進行serialize()。這就難怪使用

memcache::get('people')取不到值了。

解決:簡單的方法,可以通過配置,讓yii的memcache擴充套件不進行額外的"小動作"。

[php]view plain

copy

'cache'

=> 

array

(      

'class'

=> 

'system.caching.cmemcache'

,   

'servers'

=> 

array

( array

('host'

=> 

'127.0.0.1'

, 'port'

=> 11211)),  

'keyprefix'

=> 

'',   

'hashkey'

=> false,   

'serializer'

=> false)   

serialize

將這些都置空,擴充套件的行為就同原生

memcache一致了。

四.更多memcache方法呼叫

yii的擴充套件中,只有memcache的最常用操作,並沒有類似原生memcache的decrement和increment等操作。如果想要作用這些方法怎麼辦呢?可以使用擴充套件中的

getmemcache方法獲得原生memcache對像,然後就可以使用原生方法了。

[php]view plain

copy

$mem

$res

= $mem

->decrement(

$key

);  

使用原生方法時,最好設定上文(三)中提到的配置,不然同時使用yii的擴充套件方法和memcache的原生方法會帶來麻煩。

Yii 中使用 yii bootstrap 擴充套件

第二步 在配置檔案中配置 配置乙個別名 使得可以bootstrap訪問到擴充套件路徑 yii setpathofalias bootstrap dirname file extensions bootstrap return array theme bootstrap 乙個官網給的例子,這個可以暫時...

Yii中使用RBAC完全指南

另一篇作為參考 yii提供了強大的配置機制和很多現成的類庫。在yii中使用rbac是很簡單的,完全不需要再寫rbac 所以準備工作就是,開啟編輯器,跟我來。在配置陣列中,增加以下內容 components array authmanager array class cdbauthmanager 認證...

Yii中使用RBAC完全指南

寫得不錯,因為yii的文件還缺少一些實際的例子,所以不是那麼容易看懂,看了這篇就完全搞清楚了!九月 10,2009 posted by 東至 寫在前面 以下內容適合yii 1.0.x,其他版本可能有略微的差別。開始準備 yii提供了強大的配置機制和很多現成的類庫。在yii中使用rbac是很簡單的,完...