サーチ…
備考
memcacheを使用したキャッシュ
Memcacheは分散オブジェクトキャッシングシステムであり、小さなデータを格納するためにkey-value
を使用しkey-value
。 Memcache
コードを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つの重要な操作があります
- ストアデータ: memcachedサーバーに新しいデータを追加する
- データを取得する: memcachedサーバーからデータを取得する
- データの削除: 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倍高速です。