Heim  >  Artikel  >  Backend-Entwicklung  >  PHP之Memcached跟ttserver

PHP之Memcached跟ttserver

WBOY
WBOYOriginal
2016-06-13 13:25:081168Durchsuche

PHP之Memcached和ttserver

以前只是会用memcached做防刷控制,最近看了一些博客文章和公司一些项目对其了解加深了一步,写个笔记。

?

PHP提供的有memcache和memcached,至于他们的区别,建议看PHP模块:Memcached > Memcache这篇文章就有明了了。

?

什么是Memcached?
Memcached是国外社区网站 LiveJournal 的开发团队开发的高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

?

?

我们知道PHP的memcached中有Memcached::addServers()向服务器池中增加servers参数指定的服务器。Memcache 客户端使用 addServer 服务器池时,是根据“crc32(key) % current_server_num”哈希算法将 key 哈希到不同的服务器的,PHP、C 和 python 的客户端都是如此的算法。Memcache 客户端的 addserver 具有故障转移机制,当 addserver 了2台 Memcached 服务器,而其中1台宕机了,那么 current_server_num 会由原先的2变成1。

?

下面我们就来测试一下分布式,你也许说我没有那么多机子,可以参照memcached的分布式应用,

?

?

PHP与Memcache分布式

在一台或者多台机器启用一个或者多个进程,这里是在一台机器启用两个进程,使用两个端口:
# /usr/local/bin/memcached -p 11211 -d -u nobody
# /usr/local/bin/memcached -p 11212 -d -u nobody

PHP 测试代码
<?php //连接Memcache
$mem = new Memcache;
$mem->addServer("localhost", 11211);
$mem->addServer("localhost", 11212);

$mem->add('key1', 1);
$mem->add('key2', 2);
$mem->add('key3', 3);
$mem->add('key4', 4);
?

然后在我们memcache pecl中的memcache.php来看着写值得分布,你就可以看出端倪了。(prc中也apc.php,以前不知道还想自己写一个的)

?

?

有关ttserver的,请参考

?

?

Tokyocabinet/Tokyotyrant文档大合集

任何Memcached客户端均可直接调用tokyotyrant。

?

这里让我迷路了,我们常说的memcached是memcached.org实现的,Tokyo Tyrant 加上 Tokyo Cabinet,构成了一款支持高并发的分布式持久存储系统,对任何原有Memcached客户端来讲,可以将Tokyo Tyrant看成是一个Memcached,但是,它的数据是可以持久存储的。这一点,跟新浪的Memcachedb性质一样。这里的意思ttserver支持memcached协议,我只需要启动ttserver就可以通过使用php的memcache来使用(只需启动ttserver即可,不用启动memcache),这是我粗俗的理解。

?

?

想要深入的理解请参考http://www.google.com/cse/home?cx=016088334967758658265:ej58ey2f_s0这个自定义google引擎中有关memcache的文章。还有一些别人翻译文档。

?

准备写一个类似apc.php的ttserver的监控...

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn