PHPのKetamuで、少なくともアクセスは何だったのでしょうか。
私はPHPについて話していません。 アクセスに関して。 まあ、PHPからも。
さあ、始めましょう。
何がありますか。
Inet、Google ...
...すべて:(
ああ、ほとんど忘れていました。 最も重要なこと。 天井なので、見つめるのは愚かだった。
だからグーグル。
PHPにはケタムはありません。 それはどこですか。
Gee、last.fmで。
www.lastfm.ru/user/RJ/journal/2007/04/10/rz_libketama_-_a_consistent_hashing_algo_for_memcache_clients
しかし、2007年4月10日以降にのみバージョン0.1.1が更新されることはなく、機能のセットは何とか不足しています。 ダンガ。 comはすでにgets'y、cas'yなどです。 ゴミだらけ。 できることはできますが、それは破壊を理解することです。
さらにGoogle ...
tangent.org
何がありますか。
MySQLのMemcached関数
libmemcached 0.23
すごい!!!!
ライブラリを使用するクライアント:
Ruby: github.com/fauna/memcached/tree/master
Perl: code.google.com/p/perl-libmemcached
Python: code.google.com/p/python-libmemcached
PHP:(日本語) labs.gree.jp/Top/OpenSource/libmemcached.html
PHPのある場所に行きます。
カラウル!!! 小屋。
くそーとバージョン0.1.0。 しかし、新鮮な、2008年9月18日から。 要するに、誰もそれらを探す時間がなかったので、その中の不具合はまだ修正されていません。
...すべて。
これ以上。
さて、試してみます。
おそらく小屋から始めないほうがいいでしょう。
私はブルジョアにいるが、語彙全体は:こんにちは、はい、いいえ、問題、ありがとう、それだけです。
...まあ、もちろんすべてではありません、まだ性交がありますが、彼は私を助けません。
日本語では、彼はあらゆる点で背が低い。
MySQL用のlibmemcachedおよびMemcached関数をデータベースサーバーに配置しました。 Webサーバーlibmemcachedに。
4つのmemcachedデーモンを選択します。 Webサーバー上に1つ、データベースサーバー上に3つ。 なんで? そしてFIGは知っています、それは起こりました。
機能をインストールします。
うーん、リストは印象的です
memc_add
memc_add_by_key
memc_servers_set
memc_server_count
memc_set
memc_set_by_key
memc_cas
memc_cas_by_key
memc_get
memc_get_by_key
memc_delete
memc_delete_by_key
memc_append
memc_append_by_key
memc_prepend
memc_prepend_by_key
memc_increment
memc_decrement
memc_replace
memc_replace_by_key
memc_servers_behavior_set
memc_udf_version
memc_list_behaviors
memc_stats
memc_stat_get_keys
memc_stat_get_value
わかりません。 casがある場合? どこに行きますか? なぜcasはgets'aなしで私に降伏した!
さて、それを覚えています。 おそらく。
サーバーを決定します
SELECT memc_servers_set('192.168.0.10:11211, 192.168.0.11:11211, 192.168.0.11:11212, 192.168.0.11:11213);
キャッシュに12個のキーを押し込みます
SELECT memc_set('key1', 'val1');
…
SELECT memc_set('key10', 'val10');
キャッシュからそれらを取ります
SELECT memc_get('key1');
…
SELECT memc_get('key10');
それは普通のようで、彼らが置いたものを与えます。
現在、memcachedデーモンを1つ削除しています。 予想どおり、2つのキーがカバーされました。 再度、同じキーを10個キャッシュに入れます。
イチジク。 これらの2つの行方不明は現れませんでした。 ケタマは臭いがしません。 まあ、何も、私に読んだreadmeはzapadloではありません。
Memcached Functions for MySQLは何も巧妙なものを見つけませんでした。 Tangent.orgに行きましょう。
くそー、すべてが実行されている方法。
ええ、ここではそれについてのようです
docs.tangent.org/libmemcached/memcached_behavior.html
translate.ruの動作によると、この動作です。
デフォルトでは、MEMCACHED_BEHAVIOR_DISTRIBUTIONのコストはMEMCACHED_DISTRIBUTION_MODULAであり、MEMCACHED_DISTRIBUTION_CONSISTENTとMEMCACHED_BEHAVIOR_HASHが必要なので、MEMCACHED_HASH_KETAMAになります。
そして、memcached_behavior_set()を行います。 MySQLでは、これはmemc_servers_behavior_setであると想定する必要があります。
やめて そしてこれがmemcached_behavior.podがドックにあるものです
=アイテムMEMCACHED_BEHAVIOR_DISTRIBUTION
これを使用して、サーバーに値を配布するさまざまな手段を有効にすることができます。
デフォルトの方法はMEMCACHED_DISTRIBUTION_MODULAです。 有効にできます
MEMCACHED_DISTRIBUTION_CONSISTENTを設定することによる一貫したハッシュ。
一貫性のあるハッシュにより、より良い分散が実現し、サーバーが
最小限のキャッシュ損失でクラスターに追加されます。 現在
MEMCACHED_DISTRIBUTION_CONSISTENTは値のエイリアスです
MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA。
=アイテムMEMCACHED_BEHAVIOR_KETAMA
デフォルトの分布をMEMCACHED_DISTRIBUTION_CONSISTENT_KETAMAに設定します
MEMCACHED_HASH_MD5へのハッシュ。
私の頭の中の混乱が始まります。
ええ、私はおそらく理解しています、MEMCACHED_BEHAVIOR_KETAMAを行う必要があります...
どう?
さらに読みましょう。 すべてを必要とするのはばかげているようです。 まだブルジョアはbyyyyを理解しています。
それはそれのように見えます
単純なオンまたはオフオプションの場合、値1を渡すだけです。
したがって、MEMCACHED_BEHAVIOR_KETAMAセット1が必要です。
さて、試してみましょう。
SELECT memc_servers_behavior_set ('MEMCACHED_BEHAVIOR_KETAMA', 1);
Mdaaa。 カーディクがいっぱいです。
mysql>SELECT memc_servers_behavior_set('MEMCACHED_BEHAVIOR_KETAMA', 1);
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql>
MySQLサーバーを再起動するだけで処理されます...
まあ。 開発者への書き込み
forums.mysql.com/read.php?150、231325,231325#msg-231325
すぐに...未登録
forums.mysql.com/read.php?150、231325,231359#msg-231359
もしそうなら
forums.mysql.com/read.php?150、231325,231442#msg-231442
それは同じです。
久しぶりですね。
愚かにも天井を見なければなりません。 たぶんそこに何かがありますか?
そうだね あります。 今だけいくつかの考えはスマートではなく、汚いです。
どこからでも必要なものではない場合 だからどこかに置いた。 どこかでそれを見つけて、必要なものをそこに置くだけです。
あー ソースに登ります。 そして、彼らは並んでいます。 そして、私はCについての名前しか知りません。 言語がそれと呼ばれるという意味で。
まあ。 何もする必要はありません。馴染みのある言葉を探します。
MySQLライブラリはおそらく価値がありません。 libmemcached自体に登ります。
うん、そこにある。 memcached.cで。 29行目
ptr-> distribution = MEMCACHED_DISTRIBUTION_MODULA;
2つのよく知られた言葉。
そして、名前の構成には有望です:memcached_st * memcached_create(memcached_st * ptr)。
では、memcached_stが誰であるかを理解してみましょう。
おそらく理解できる。 libmemcached.podによると、translate.ruがすべてを正しく説明してくれた場合、これは私が必要とするものではない場所です。
再びtangent.orgに行きます。 Confはそこにありませんが、Maylinワームlists.tangent.org/mailman/listinfo/libmemcachedがあります。 大したことはありません。 おなじみの言葉を愚かに探します。
何かあります。
lists.tangent.org/pipermail/libmemcached/2008-September/000434.html
正しく理解している場合は、MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMITを設定する必要があります。 彼らは10を書きます、私は3を試みます。
lists.tangent.org/pipermail/libmemcached/2008-August/000429.html
まあ、私たちは同じことをします。
だから。 ソースを修正してみましょう。 必要なものを置くという意味で。
代わりに、ptr-> distribution = MEMCACHED_DISTRIBUTION_MODULA;
ptr-> distribution = MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA;と書きます。
わあ Cでの私の人生の最初の0.5行
代わりに、ptr-> retry_timeout = 0;
ptr-> retry_timeout = 60;と書きます。
Yyyyyyyyy。 代わりにMEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMITについて書くのはなぜですか?
繰り返しますが、私たちは愚かに天井を見ています。
それを見て。 ソースでSERVER_FAILURE_LIMITについて検索します。
あります。 memcached_behavior.cで。 ページ166、ptr-> server_failure_limitと呼ばれます。
残りとの類推で追加
ptr-> server_failure_limit = 3;
たぶん乗車。 原則として、サーバーは癌になります。 だから私たちもそれを置きます。
それが起こったことです
memcached_st *memcached_create(memcached_st *ptr)
{
memcached_result_st *result_ptr;
if (ptr == NULL)
{
ptr= (memcached_st *)malloc(sizeof(memcached_st));
if (!ptr)
return NULL; /* MEMCACHED_MEMORY_ALLOCATION_FAILURE */
memset(ptr, 0, sizeof(memcached_st));
ptr->is_allocated= MEMCACHED_ALLOCATED;
}
else
{
memset(ptr, 0, sizeof(memcached_st));
}
result_ptr= memcached_result_create(ptr, &ptr->result);
WATCHPOINT_ASSERT(result_ptr);
ptr->poll_timeout= MEMCACHED_DEFAULT_TIMEOUT;
ptr->connect_timeout= MEMCACHED_DEFAULT_TIMEOUT;
ptr->retry_timeout= 60;
ptr->distribution= MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA;
ptr->server_failure_limit= 3;
return ptr;
}
それだけです 再コンパイルまたは続行します。 オナニを始めましょう...まあ、あなたは理解しています、反復。
サーバーを決定します
SELECT memc_servers_set('192.168.0.10:11211, 192.168.0.11:11211, 192.168.0.11:11212, 192.168.0.11:11213);
キャッシュに12個のキーを押し込みます
SELECT memc_set('key1', 'val1');
…
SELECT memc_set('key10', 'val10');
キャッシュからそれらを取ります
SELECT memc_get('key1');
…
SELECT memc_get('key10');
それは普通のようで、彼らが置いたものを与えます。
memcachedデーモンを1つ削除しています。
わかりません。 なんてこった。 なぜ彼らはすべて生きているのですか? これは、キャッシュに入れたデータについての私です。
わかった 2番目のValim。
まあ、私たちは同意しませんでした。 彼らはすべて生きています。
まあ、3番目の場合。
くそー、みんな生きている。
まあ、あなたは私たちを取ることはできません。 スクラップに対する受付はありません。 最後の4番目のmemcachedデーモンを取得します。
同じこと。 生存者はいません。
私たちは殺し、育て、救い出し、抜け出し始めます...
...短い反復。
殺せない!!!
うーん。 動作します。 それ以上。
いえいえ あなたは私たちを連れて行かないでしょう。
すべて殺された!
彼は1つのノードを生き残った。 静かに2番目に発生しました。 memcachedへの呼び出しを手配することなく、彼は最初の呼び出しをダンプしました。
すべてが生き残ったわけではありません。 あなたが癌を置きたい人を知ってください。
うわ 私は何について話しているのですか。
実際にはPHPについて。
さて、小屋labs.gree.jp/Top/OpenSource/libmemcached.htmlに行きましょう
だから、少なくともソースは小屋にいない神に感謝
github.com/kajidai/php-libmemcached/tree/master
ねじ込みます。
labs.gree.jp/Top/OpenSource/libmemcached/Document.html
試して
<?php
$memcached = new Memcached();
$memcached->addserver('192.168.0.10', 11211);
$memcached->addserver('192.168.0.11', 11211);
$memcached->addserver('192.168.0.11', 11212);
$memcached->addserver('192.168.0.11', 11213);
$memcached->set('key1', 'val1');
$ret = $memcached->get('key1');
Echo $ret. “<br>”;
…
ろくでなしが働いています...
MySQLで動作します。
正確には、データはペアで処理されます。
私たちは倒し、持ち上げ、書き、読みます-すべてが正しいです。
ああ、ところで。 Webサーバー上で、切断されたlibmemcachedがねじ込まれました。
また、ここにある機能についてはどうでしょうか?
悪くない
memcached_ctor
memcached_server_add
memcached_add
memcached_add_by_key
memcached_append
memcached_append_by_key
memcached_behavior_get
memcached_behavior_set
memcached_cas
memcached_cas_by_key
memcached_delete
memcached_delete_by_key
memcached_get
memcached_get_by_key
memcached_set
memcached_set_by_key
memcached_increment
memcached_decrement
memcached_prepend
memcached_prepend_by_key
memcached_replace
memcached_replace_by_key
memcached_server_list
memcached_mget
memcached_fetch
memcached_server_list_append
memcached_server_push
そこにも行きます。
そして、グリッチはどうですか...
そしてFIGは彼を知っています。
見つけるために。 実は、ロシア語の英語で同じ著者を日本に書いてはいけません。 結局のところ、彼は日本語の英語で答えてくれるでしょう。
そして、戦争が始まります。
さて、ソースに入りましょう。 結局、私はすでに合計で2.5行ものCを書いています。
くそー、それはとても簡単です...
ああ、運転した。 彼は単にzendで呼び出しをブロードキャストするためのラッパーを作成しました。 くそー、おそらくそれをする場所は他にないでしょう。
まあ何。
まとめると。
第一に。 私はCで最初の2.5行を書きました。
第二に。 PHPにはケタムがあります。
第三に。 このキャッシュを簡単にダンプしてください。
4番目。 memcachedのデータへの通常のアクセスから、少なくともCから、少なくともPerlから、少なくともMySQLを使用したPHPから保存します。 1つは嘘です、どこで誰が正しく読むかを気にしません。
PS。 ブライアン・アーカーに敬意を表するbrian.krow.net