web服务器1 web服务器2 web服务器3
如果每台web服务器都向mysql服务器表插入信息并且要做出相应最新编号反馈
出现这样的高并发时候怎么减少服务器压力,同时用户体验还要好
可以使用Memcache缓存 使用Memcache的add方法 原子性(不能修改)
<?php
$memcache_obj = memcache_connect ( "localhost" , 11211 );
/* 面向过程编程 API */
memcache_add ( $memcache_obj , ‘var_key‘ , ‘test variable‘ , false , 30 );
/* 面向对象编程 API */
$memcache_obj -> add ( ‘var_key‘ , ‘test variable‘ , false , 30 );
?>
成功时返回 TRUE , 或者在失败时返回 FALSE 。 如果这个key已经存在返回 FALSE
备注:Memcache是一个分布式缓存 所以可以挂在其他空闲服务器上 达到缓存共享
特性、优点和限制
Memory :内存存储,速度快,对于内存的要求高,所缓存的内容非持久化。
对于 CPU 要求很低,所以常常采用将 Memcached 服务端和一些 CPU 高消耗 Memory 低消耗应用部属在一起。
集中式 Cache :避开了分布式 Cache 的传播问题,但是需要非单点保证其可靠性,这需要 cluster 的工作,
可以将多个 Memcached 作为一个虚拟的 cluster ,
同时对于 cluster 的读写和普通的 memcached 的读写性能没有差别。
分布式扩展: Memcached 的很突出一个优点,就是采用了可分布式扩展的模式。
可以将部属在一台机器上的多个 Memcached 服务端或者部署在多个机器上的 Memcached 服务端组成一个虚拟的服务端,
对于调用者来说完全屏蔽和透明。提高的单机器的内存利用率。
Socket 通信:传输内容的大小以及序列化的问题需要注意(当前支持 Tcp 和 udp 两种模式),序列化成本和带宽成本还是需要注意
特殊的内存分配机制:首先要说明的是 Memcached 支持最大的存储对象为 1M
Cache 机制简单: 首先它没有什么同步,消息分发,两阶段提交等等,它就是一个很简单的 Cache ,把东西放进去,然后可以取出来