サーチ…


備考

インストール

あなたはpeclを使ってmemcacheをインストールできます

pecl install memcache

memcacheを使用したキャッシュ

Memcacheは分散オブジェクトキャッシングシステムであり、小さなデータを格納するためにkey-valueを使用しkey-valueMemcacheコードをPHPに呼び出す前に、それがインストールされていることを確認する必要があります。これはclass_existsメソッドを使って行うことができます。モジュールがインストールされていることを確認したら、memcacheサーバーインスタンスに接続することから始めます。

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->connect('localhost',11211);
}else {
  print "Not connected to cache server";
}

これにより、Memcache php-driverがインストールされ、localhost上で実行されているmemcacheサーバインスタンスに接続することが検証されます。

Memcacheはデーモンとして動作し、 memcachedと呼ばれます

上記の例では、1つのインスタンスにのみ接続していましたが、複数のサーバーに接続することもできます

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->addServer('192.168.0.100',11211);
  $cache->addServer('192.168.0.101',11211);
}

この場合、接続とは異なり、値を格納または取得しようとするまで、アクティブな接続はありません。

キャッシングには、実装する必要がある3つの重要な操作があります

  1. ストアデータ: memcachedサーバーに新しいデータを追加する
  2. データを取得する: memcachedサーバーからデータを取得する
  3. データの削除: memcachedサーバーから既存のデータを削除する

ストアデータ

$cacheまたはmemcachedクラスオブジェクトには、(ttl)の値を保存するためのキー、値、および時間を受け取るsetメソッドがあります。

$cache->set($key, $value, 0, $ttl);

ここで$ ttlまたは生きる時間はmemcacheにサーバーにペアを保存させたい時間です。

データを取得する

$cacheまたはmemcachedクラスオブジェクトには、キーを受け取り、対応する値を返すgetメソッドがあります。

$value = $cache->get($key);

キーに値が設定されていない場合はnullを返します。

データを削除する

場合によっては、キャッシュ値を削除する必要が生じることがあります。 $cacheまたはmemcacheインスタンスにはdeleteメソッドがあり、これをdeleteすることができます。

$cache->delete($key);

キャッシュのための小さなシナリオ

簡単なブログを想定しましょう。ランディングページには、各ページの読み込み時にデータベースから取得される複数の投稿があります。 SQLクエリを減らすために、memcachedを使用して投稿をキャッシュすることができます。ここには非常に小さな実装があります

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->connect('localhost',11211);
    if(($data = $cache->get('posts')) != null) {
      // Cache hit
      // Render from cache
    } else {
      // Cache miss
      // Query database and save results to database
      // Assuming $posts is array of posts retrieved from database
      $cache->set('posts', $posts,0,$ttl);
    }
}else {
  die("Error while connecting to cache server");
}

APCキャッシュを使用したキャッシュ

Alternative PHP Cache(APC)は、PHPのための自由でオープンなopcodeキャッシュです。その目的は、PHPの中間コードをキャッシュして最適化するためのフリーでオープンで堅牢なフレームワークを提供することです。

インストール

sudo apt-get install php-apc
sudo /etc/init.d/apache2 restart

キャッシュを追加する:

apc_add ($key, $value , $ttl);
$key = unique cache key
$value = cache value
$ttl = Time To Live;

キャッシュの削除:

apc_delete($key);

キャッシュの設定例:

if (apc_exists($key)) {
    echo "Key exists: ";
    echo apc_fetch($key);
} else {
    echo "Key does not exist";
    apc_add ($key, $value , $ttl);
}

パフォーマンス

APCはMemcachedよりも約5倍高速です。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow