在处理业务逻辑时有可能遇到高并发问题,例如商城秒杀、微博评论等。如果不做任何措施可能在高瞬间造成服务器瘫痪,如何解决这个问题呢?队列是个不错的选择。队列(Queue)又称先进先出(First In First Out)利用消息队列可以很好地异步处理数据传送和存储,当你向数据库中写入数据就可采取消息队列来异步插入。只要有并发限制的地方基本都可以使用队列来解决。这里先重点介绍一下memcacheq。

持久化消息队列memcacheq是一个轻量级的消息队列。依附于Berkeley DB和libevent。Berkeley DB用于持久化存储队列的数据,避免在memcacheq出问题时造成数据丧失。接下来看一下安装过程,首先下载libevent-1.4X***、BerkeleyDB5.0、memcacheq-0.2.0,下载地址:

http://monkey.org/~provos/libevent/

http://download.oracle.com/berkeley-db/db-5.0.21.tar.gz

http://code.google.com/p/memcacheq/downloads/list

安装步骤:

tar zxvf libevent-1.4.14b-stable.tar.gz
cd libevent-1.4.14b-stable
./configure
make
make install
ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2
cd ..
tar zxvf db-5.0.21.tar.gz
cd db-5.0.21/build_unix/
../dist/configure
make
make install
vi /etc/ld.so.conf
加入以下两行
/usr/local/lib
/usr/local/BerkeleyDB.5.0/lib
执行
ldconfig
cd ../../
tar zxvf memcacheq-0.2.0.tar.gz
cd memcacheq-0.2.0
./configure --with-bdb=/usr/local/BerkeleyDB.5.0 --with-libevent=/usr/local/lib --enable-threads
make
make install
启动前确定一下 日志目录是否存在 如果不存在需要手动创建
memcacheq -d -r -uroot -p22201 -H /data0/memcacheq -N -v -L 1024 -B 1024 > /data0/mq_error.log 2>&1
参数说明:
-d : 以后台服务方式运行
-l : 设置监听地址及端口(默认端口是22201)
-A : 数据页大小
-H : 数据保存目录 一定要存在
-B : 队列中每条数据的最大长度(字节)
-N : 使用内存缓冲方式保存数据至磁盘,从而获得极高性能。若无此参数,性能会很差
-R : 自动清理过期的日志 -u : 设置memcacheq进程账号

PHP代码示例:

  1. $memcache_obj=newMemcache;
  2. $memcache_obj->connect('192.168.1.106',22201);

  3. $memcache_obj->set('a',time(),0,0);//入栈
  4. echo$memcache_obj->get('a');//出栈

更多相关文章

  1. Wordpress查询另一个wordpress数据库for循环
  2. 数据库分卷备份 thinkphp3.2版
  3. 速率结构的数据库/算法
  4. 使用php codeigniter进行Mysql数据库同步
  5. PHPExcel导入导出及大量数据导入缓存方式的修改
  6. php中三种数据库的连接方式
  7. 无法从mysql中选择最新的而不是相同的数据
  8. curl POST的数据大于1024字节
  9. 无法从Ajax POST请求中将带空格的数据导入数据库

随机推荐

  1. Android 开发环境
  2. Android 歌词Lrc显示 自定义View
  3. Android NDK R8 发布
  4. android美女电子相册
  5. android ril 代码逻辑分析
  6. Android开源:数据库ORM框架GreenDao学习(二
  7. android 蓝牙功能
  8. android WebView基础教材
  9. Android Training - Volley(Lesson 0 -
  10. android 视频通话 项目 源码