ホームページ >バックエンド開発 >PHPチュートリアル >php memecacheキャッシュのグループ化パズル

php memecacheキャッシュのグループ化パズル

WBOY
WBOYオリジナル
2016-06-13 12:58:59796ブラウズ

php memecache キャッシュのグループ化について混乱しています
php memcache キャッシュでは、キャッシュを追加または削除するメソッド add と delete の 2 つしか見つかりませんでした。グループ化機能はありません

JAVA 版と同様に、memecache にはグループ化機能があります。たとえば、ユーザーの日記のグループ化を使用すると、日記を更新すると、この日記のグループ化キャッシュが削除され、個人の日記リストと WAP 版の日記リストも更新されます。

どのように機能したいですか

add("cacheGroup","cacheName1",$value1);
add("cacheGroup","cacheName2",$value2);
add("cacheGroup","cacheName3",$value3);
deleteGroup("cacheGroup");
次に、上記の 3 つのキャッシュをすべてクリアします




php memecache キャッシュ API は次のとおりです
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 ― 実行時にサーバー パラメータを変更する
------解決策-----
add ("cacheGroup","cacheName1",$value1);
add("cacheGroup","cacheName2",$value2);
add("cacheGroup","cacheName3",$value3);
deleteGroup("cacheGroup");

このように、1 つのキーで配列を制御します

<br />
class mem<br />
{<br />
	public $memcache=null;<br />
	public $array=array();<br />
	public function __construct()<br />
	{<br />
		$this->memcache = new Memcache;<br />
		$this->memcache->connect('localhost', 11211) or die ("Could not connect");<br />
	}<br />
	public function add($parent="",$key="",$value="")<br />
	{<br />
		$this->array[$key]=$value;<br />
		$this->memcache->set($parent,$this->array,false,500);<br />
	}<br />
	public function deleteGroup($key=null)<br />
	{<br />
		$this->memcache->delete($key);<br />
	}<br />
	public function get($key=null)<br />
	{<br />
		return $this->memcache->get($key);<br />
	}<br />
}<br />
$mem=new mem();<br />
$mem->add("cacheGroup","cacheName1","1");<br />
$mem->add("cacheGroup","cacheName2","2");<br />
$mem->add("cacheGroup","cacheName3","3");<br />
//$mem->deleteGroup("cacheGroup");<br />
var_Dump($mem->get('cacheGroup'));<br />
<br />


-----解決策---------

引用:
1、
setGroupExpire でparent::set($group, $expire); を使用すると、これは単にキャッシュを追加するだけではありませんか?彼はキャッシュ時間をどのように設定したのでしょうか?


ここでは、コンテンツを保存するために配列 (グループとして) を使用することを避けるために、実際にはちょっとしたトリックが使用されています。データが多すぎてグループ内に多数の要素がある場合、同じ配列のコンテンツが頻繁に更新されます。これは、要素を読み取るときにすべてのデータを読み取る必要があることを必ずしも意味するものではありません。

この仕組みは、キャッシュの有効期限を制御するために MC (memcache の略、以下同じ) に依存するのではなく、キャッシュの有効期限が切れるかどうかを自分自身に依存します。

このキャッシュの内容の設定がグループ全体の有効期限となります。それは
に依存するからです

パブリック関数 getGroup($group, $name) {
//有効期限が切れている場合
If(parent::get($group) < time()) {
nullを返します。 }
                                                 returnparent::get($group.'_'.$name);
}

上記のコードは、データが存在する場合でも、parent::get($group) < time() が確立されている限り、このグループ内のすべてのデータに統一された時間検証基準があるかどうかを判断するために使用されます。 MC 内またはデータがありません。期限切れです。期限切れともみなします

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