addServer

在说Memcache的长连接(pconnect)和短连接(connect)之前要先说说Memcache的addServer,Memcache的addServer是增加一个服务器到连接池中(addServer没有连接到服务器的动作,所以在memcache进程没有启动的时候,执行addServer成功也会返回true)。通过 Memcache::addServer() 打开的连接将会在脚本执行结束后自动关闭,也可以使用 Memcache::close()进行手动关闭。当使用这个方法的时候(与Memcache::connect()和
Memcache::pconnect()相反) 网络连接并不会立刻建立,而是直到真正使用的时候才建立。 因此在加入大量服务器到连接池中时也是没有开销的,因为它们可能并不会被使用。addServer的第三个参数persistent就是是否使用长连接(pconnect),默认是TRUE。

pconnect

Memcache::pconnect()和 Memcache::connect()非常类似,不同点在于这里建立的连接是持久化的。这个连接不会在脚本执行结束后或者Memcache::close()被调用后关闭。同样你也可以使用函数memcache_pconnect()。

关于Memcache的长连接是如何重用的,这是一个网友的解释“persistent为false时的表现是很好理解的,请求来了就连接。请求完毕就关闭对Memcache Server的连接。至于 persistent为true的情况,处理也是比较简单的。一个Memcache的连接hash值主要跟host、port以及timeout有关。有一个连接请求到来时就根据host和port生成一个hash值,然后查表。有则取出,没有则新建一个连接,新建后放入连接池。请求关闭时并不关闭对Memcache
Server的连接,而是把这个连接(在做一些状态更新后)放入连接池(就是前面提到的那个hash 表),供下次查询使用。”Memcache的长连接(pconnect)开销较小,但是占用TCP端口。

connect

Memcache::connect()建立一个到memcached服务端的连接。 使用方法 Memcache::connect()打开的连接在脚本执行结束后会自动关闭。当然,你也可以使用方法 Memcache::close()来主动关闭。 同时你也可以使用 memcache_connect()函数来获取一个连接。

Memcached的连接数

登录到Memcache Server查看服务器的状态

1

2
 telnet 127.0.0.1
11211

 stats

得到如下结果

STAT pid 23193
STAT uptime 5846159
STAT time 1350869831
STAT version 1.4.9
STAT libevent 1.4.13-stable
STAT pointer_size 64
STAT rusage_user 18130.632724
STAT rusage_system 53822.121793
STAT curr_connections 2048
STAT total_connections 98471150
STAT connection_structures 2383
STAT reserved_fds 20
STAT cmd_get 3570290772
STAT cmd_set 98386836
STAT cmd_flush 2
STAT cmd_touch 0
STAT get_hits 2697025276
STAT get_misses 873265496
STAT delete_misses 6124562
STAT delete_hits 26956415
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 138982259474
STAT bytes_written 3052329831433
STAT limit_maxbytes 8589934592
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 2322
STAT hash_power_level 21
STAT hash_bytes 16777216
STAT hash_is_expanding 0
STAT expired_unfetched 743266
STAT evicted_unfetched 0
STAT bytes 1109591787
STAT curr_items 2343667
STAT total_items 98338176
STAT evictions 0
STAT reclaimed 1492847
END

发现当前打开着的连接数(curr_connections)已经达到了上限2048,而命中率 = get_hits/cmd_get * 100 = 75.54% 这个效率已经相当低了,Memcached最大同时连接数默认是1024,增加最大连接数命中率应该会有所改变。

关于PHP使用Memcache的详细参数和示例推荐这篇文章:php操作memcache的使用测试总结

关于Memcached的全面解析,这里有几篇翻译不错的文章

也顺便推荐下一个不错的Memcached图形化管理监控工具:MemAdmin

关于Memcache的连接的更多相关文章

  1. PHP使用memcache长连接作为RPC客户端需要注意的地方

    memcache扩展版本 3.0.8 一. retry_interval $retry_interval 某个rpc服务器端失败后故障转移的时间,retry_interval的时间内,该节点会被一直标 ...

  2. Linux 连接memcache 拒绝连接,防火墙关闭,selinux disabled 仍然不行,最后在外站找到原因,为服务器添加memcache访问权限

    最后啊,不行,直接装memcached  https://www.runoob.com/memcached/memcached-install.html 附上连接:https://www.presta ...

  3. [已解决]centos6.4 php连接mysql和memcache提示权限不允许

    昨天新安装了64位系统,所以就重新安装了一个centos的虚拟机,配置了一个测试环境,刚开始是页面打不开,这个确定是selinux规则没有设置好使用如下命令解决: chcon -R -h -t htt ...

  4. 网站缓存技术总结( ehcache、memcache、redis对比)

    网站技术高速发展的今天,缓存技术已经成为大型网站的一个关键技术,缓存设计好坏直接关系的一个网站访问的速度,以及购置服务器的数量,甚至影响到用户的体验. 网站缓存按照存放的地点不同,可以分为客户端缓存. ...

  5. python之redis和memcache操作

    Redis 教程 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据 ...

  6. Memcache教程 Memcache零基础教程

    Memcache是什么 Memcache是danga.com的一个项目,来分担数据库的压力. 它可以应对任意多个连接,使用非阻塞的网络IO.由于它的工作机制是在内存中开辟一块空间,然后建立一个Hash ...

  7. ehcache memcache redis 三大缓存

    最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今天特意归纳下各个缓存的优缺点,仅供参考!  Ehcache 在Java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS ...

  8. Memcache所有方法及参数详解

    memcache函数所有的方法列表如下: 参考http://www.php.net/manual/zh/function.Memcache-add.php Memcache::add - 添加一个值, ...

  9. Memcache的使用和协议分析详解

    Memcache的使用和协议分析详解 作者:heiyeluren博客:http://blog.csdn.NET/heiyeshuwu时间:2006-11-12关键字:PHP Memcache Linu ...

随机推荐

  1. linux命令学习笔记(44):top命令

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管 理器.下面详细介绍它的使用方法.top是一个动态显示过程,即可以通过用户按键来不断刷 ...

  2. Codeforces617E XOR and Favorite Number(分块 异或)

    Bob has a favorite number k and ai of length n. Now he asks you to answer m queries. Each query is g ...

  3. Mysql 5.7.18忘记密码

    5.7.18密码修改发生了变化,旧版的方法不再奏效. 1. ps -ef | grep mysqld,kill掉启动的mysql服务: 2. 创建/etc/my.cnf,添加: [mysqld] sk ...

  4. JavaScript高级程序设计学习笔记第十四章--表单

    1.在 HTML 中,表单是由<form>元素来表示的,而在 JavaScript 中,表单对应的则是 HTMLFormElement 类型. HTMLFormElement 继承了 HT ...

  5. [hdu3530]Subsequence (单调队列)

    题意:求在一段序列中满足m<=max-min<=k的最大长度. 解题关键:单调队列+dp,维护前缀序列的最大最小值,一旦大于k,则移动左端点,取max即可. #include<cst ...

  6. 提取html里面url()导入的图片正则表达式

    之前写过一次,后来无意发现还是有问题,比如 <a onclick="openZoosUrl('chatwin','param'); 这个click事件函数里面就有url()部分,造成了 ...

  7. 《Java多线程编程核心技术》读后感(十六)

    线程组 线程组的作用是,可以批量的管理线程或线程组对象,有效地对线程或线程组对象进行组织 线程对象关联线程组:1级关联 package Seven; public class ThreadA exte ...

  8. (十四)hibernate逆向工程

    一.hibernate逆向工程生成实体 介绍一个模型设计工具PowerDesigner,这个是j2ee开发必要的一个工具.一般在开发中先使用PowerDesigner 创建实体关系图即概念模型.建立了 ...

  9. 使用BIND安装智能DNS服务器(一)---基本的主从DNS服务器搭建

    参考网址:http://www.unixmen.com/dns-server-installation-step-by-step-using-centos-6-3/ DNS(Domain Name S ...

  10. TensorFlow中设置学习率的方式

    目录 1. 指数衰减 2. 分段常数衰减 3. 自然指数衰减 4. 多项式衰减 5. 倒数衰减 6. 余弦衰减 6.1 标准余弦衰减 6.2 重启余弦衰减 6.3 线性余弦噪声 6.4 噪声余弦衰减 ...