Ubuntu11.04 での Memcached と php5-memcache のインストールと基本的な使用法
現在、多くの高負荷サイトは、データベース サーバーへの負荷を分散するためのキャッシュ サービスとして Memcache を使用しています。
ここでは、Ubuntu で Memcache を設定する方法と、PHP で Memecache を使用する方法のみを紹介します。Memcache の動作メカニズムやより高度なアプリケーションなど、さらに詳しく知りたい場合は、Google で調べてください...^_^
Memcache と memcached について
Memcache はプロジェクト名、memcached はサービス名です。初めての方は非常に戸惑ってしまうことが多いです。個人的には、前者を使用する方が正しいと思います。
Memcache のインストール
Memcache は、Memcache サーバーとクライアントの 2 つの部分に分かれています。 Memcache サーバーはサービスとして実行され、すべてのデータ キャッシュの確立、保存、削除が実際にここで完了します。
クライアント、ここでは PHP の呼び出し可能な拡張機能を指します。
1) Memcache サーバーをインストールします
?
sudo apt-get install memcached
?
Memcache サーバーをインストールした後、サービスを開始する必要があります:
?
memcached -d -m 128 -p 11211 -u root
?
ここでは、memcached サービスの起動パラメータについて説明する必要があります:
-p リスニングポート
-l 接続されている IP アドレス、デフォルトはローカルマシンです
-d start memcached サービスを開始します
-d restart memcached サービスを再起動します
-d stop|shutdown 閉じる 実行中memcached service
-d install memcached サービスをインストールします
-d uninstall memcached サービスをアンインストールします
-u Run as (root として実行する場合のみ有効)
-m 最大メモリ使用量、単位 MB。デフォルト 64MB
-M アイテムを削除する代わりにメモリが使い果たされた場合にエラーを返します
-c 同時接続の最大数、デフォルトは 1024
-f ブロック サイズの増加係数、デフォルトは 1.25-n 割り当てられる最小値スペース、key+value+flags のデフォルト値は 48
-h show help
?
2) Memcache クライアントをインストールします
sudo apt-get install php5-memcache
?
インストール後、php.ini で簡単な構成を実行する必要があります。、
/etc/php5/apache2/php.ini ファイルを開き、最後に次の内容を追加します。
?
[Memcache] ; 一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表, ; 它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。 ; 是否在遇到错误时透明地向其他服务器进行故障转移。 memcache.allow_failover = On ; 接受和发送数据时最多尝试多少个服务器,只在打开memcache.allow_failover时有效。 memcache.max_failover_attempts = 20 ; 数据将按照此值设定的块大小进行转移。此值越小所需的额外网络传输越多。 ; 如果发现无法解释的速度降低,可以尝试将此值增加到32768。 memcache.chunk_size = 8192 ; 连接到memcached服务器时使用的默认TCP端口。 memcache.default_port = 11211 ; 控制将key映射到server的策略。默认值”standard”表示使用先前版本的老hash策略。 ; 设为”consistent”可以允许在连接池中添加/删除服务器时不必重新计算key与server之间的映射关系。 ;memcache.hash_strategy = "standard" ;控制将key映射到server的散列函数。默认值”crc32″使用CRC32算法,而”fnv”则表示使用FNV-1a算法。 ; FNV-1a比CRC32速度稍低,但是散列效果更好。 ;memcache.hash_function = "crc32"
?
php.ini を保存し、sudo /etc/init.d/apache2 restart を実行して Apache を再起動します。
?
PHP での Memcache の使用
<?php $mem = new Memcache; //创建Memcache对象 $mem->connect('127.0.0.1', 11211); //连接Memcache服务器 $val = “这是一个Memcache的测试.”; $key = md5($val); $mem->set($key, $val, 0, 120); //增加插入一条缓存,缓存时间为120s if(($k = $mem->get('key'))){ //判断是否获取到指定的key echo 'from cache:' . $k; } else { echo 'normal'; //这里我们在实际使用中就需要替换成查询数据库并创建缓存. } ?>
?
キーについては、通常、md5 クエリ ステートメントを使用して取得します。実際の使用では、特定のニーズに応じて決定されます。
上記の手順により、Memcache の構成と基本的な使用法が完了しました...
php5-memcache 拡張機能によって提供されるメソッド
Memcache::add ― 値を追加します(既に存在する場合は false を返します)
Memcache::addServer ― 使用するサーバー アドレスを追加します
Memcache::close ― Memcache オブジェクトを閉じます
Memcache: :connect ― Memcache オブジェクトを作成します
memcache_debug ― デバッグ機能を制御します
Memcache::decrement ― 保存されたキーの値を減算します
Memcache::delete ― キー値を削除します
Memcache::flush ― キャッシュされたデータをすべてクリアします。
Memcache::get ― キー値を取得します。
Memcache::getExtendedStats ― プロセス プール内のすべてのプロセスの実行中のシステム統計を取得します。
Memcache::getServerStatus ― パラメータを取得します。実行中のサーバー
Memcache::getStats - サーバーの実行中の統計を返します
Memcache::getVersion - 実行中の Memcache のバージョン情報を返します
Memcache::increment - 保存されたキーの場合 値を追加します
Memcache::pconnect ― Memcache 永続接続オブジェクトを作成します
Memcache::replace ― R は既存のキーを上書きします
Memcache::set ― 値を追加します。すでに存在する場合は、
Memcache::setCompressThreshold を上書きします- 特定のサイズを超えるデータを圧縮します
Memcache::setServerParams - 実行時にサーバー パラメーターを変更します