Memcached、PHP、ケタマ。 そうでない堎合、しかし本圓にしたい。

したい。
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

Source: https://habr.com/ru/post/J43156/


All Articles