ホームページ  >  記事  >  バックエンド開発  >  YII での memcache の使用の概要

YII での memcache の使用の概要

巴扎黑
巴扎黑オリジナル
2017-08-06 16:14:261109ブラウズ

この記事では主に YII フレームワークで memcache を使用する方法を紹介し、Yii フレームワークで memcache を使用する際の設定、使用法、注意事項をサンプルの形式で分析します。必要な友人は参考にしてください。 YII フレームワークのメソッドでの memcache の使用について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

yii では memcache を非常に便利に使用できます

1. 設定 main.php のコンポーネントにキャッシュ設定を追加します

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) 複数のキャッシュ ポーリングを使用する場合、各キャッシュに重みを割り当てることができます。キャッシュが 1 つだけの場合は、この構成を追加せずに実行できます。


2. を使用してmemcacheを呼び出す方法も非常に簡単です

$key = 'people';
$value = json_encode(array('name'=>'ball', 'age'=>'male'));
$expire = 10;
yii::app()->cache->set($key, $value, $expire);
Yii::app()->cache->get($key);
Yii::app()->cache->delete($key);

その他のAPIについては、yiiマニュアルのCMemCacheセクションを参照してください。

3. 問題memcache にアクセスするために一律に yii 拡張機能を使用する場合、問題は発生しません。しかし、実際には、あなたは Yii を使ってバックエンドを開発しているが、フロントデスクのクラスメートは Yii を使用せず、ネイティブの memcache API を使用してデータを操作するという状況が発生します。この時点でいくつかの問題が発生します。

上記の 2 番目のパートの例のように、ネイティブの memcache API、Memcache::get を使用し、people をキーとして使用すると、値を取得できないことがわかります。

その理由は、Yii のセットがキーと値の両方を処理するためです。デフォルトでは、キーにはプレフィックスが付けられ、md5 変換され、値は Serialized() です。 Memcache::get('people') を使用して値を取得できないのも不思議ではありません。

解決策:

Yii の memcache 拡張機能が追加の「小さなアクション」を実行しないように、簡単な方法を設定できます。

'cache' => array(
  'class' => 'system.caching.CMemCache',
  'servers' => array( array('host' => '127.0.0.1', 'port' => 11211)),
  'keyPrefix' => '',
  'hashKey' => false,
  'serializer' => false)

その中には:

keyPrefix

: デフォルトで CApplication::getId() メソッドによって生成されるキーのプレフィックス。 hashKey
: キーのハッシュ操作、デフォルトは md5 serializer
: 値のシリアル化メソッド、デフォルトは Serialize これらを空白のままにすると、拡張された動作はネイティブ Memcache と一致します。

4. その他の memcache メソッド呼び出し yii の拡張機能には、memcache の最も一般的な操作のみがあり、ネイティブ memcache のデクリメントやインクリメントなどの操作はありません。これらの方法を使用したい場合はどうすればよいでしょうか?拡張機能の getMemCache メソッドを使用してネイティブ memcache オブジェクトを取得し、その後ネイティブ メソッドを使用できます。

$mem = Yii::app()->cache->getMemCache();
$res = $mem->decrement($key);

ネイティブメソッドを使用する場合は、上記(3)の設定を行うのが最善です。そうしないと、yii の拡張メソッドと memcache のネイティブメソッドを同時に使用すると問題が発生します。

以上がYII での memcache の使用の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。