• MemcacheQ 安装与使用


    MemcacheQ 是一个基于 MemcacheDB 的消息队列服务器。官网地址:http://memcachedb.org/memcacheq/

    特点:

    1.简单易用。

    2.处理速度快。

    3.可创建多条队列。

    4.并发性能高。

    5.与memcache协议兼容。

    MemcacheQ 依赖 Berkeley DB 和 libevent(1.4 或更高)。

    Berkeley DB用于持久化存储队列数据,避免当MemcacheQ崩溃或服务器死机时发生数据丢失。

    1.安装Berkeley DB

    下载地址:http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html?ssSourceSiteId=ocomcn

    $tar xvzf db-6.0.20.tar.gz
    $cd db-6.0.20/
    $cd build_unix/
    $../dist/configure
    $make
    $sudo make install

    2.安装libevent 

    下载地址:http://libevent.org/

    $tar xvzf libevent-2.0.21-stable.tar.gz
    $cd libevent-2.0.21-stable
    $./configure
    $make
    $sudo make install

    增加两行到 /etc/ld.so.conf

    /usr/local/lib
    /usr/local/BerkeleyDB.6.0/lib

    新增完运行命令刷新

    sudo ldconfig

    3.安装MemcacheQ

    下载地址:https://code.google.com/p/memcacheq/downloads/list

    创建libdb.so softlink

    ln -s /usr/local/BerkeleyDB.6.0/lib/libdb-6.0.so /usr/lib/libdb.so
    $tar xvzf memcacheq-0.2.x.tar.gz
    $cd memcacheq-0.2.x
    $./configure --with-bdb=/usr/local/BerkeleyDB.6.0 --with--libevent=/usr/lib --enable-threads
    $make
    $sudo make install

    --with-bdb=/usr/local/BerkeleyDB.6.0 指定 Berkeley DB路径

    --with--libevent=/usr/lib 指定 libevent 路径

    --enable-threads 开启多线程

    4.运行与使用

    参数列表:

    -p <num>      TCP监听端口(default: 22201)
    -U <num>      UDP监听端口(default: 0, off)
    -s <file>     unix socket路径(不支持网络)
    -a <mask>     unix socket访问掩码(default 0700)
    -l <ip_addr>  监听网卡
    -d            守护进程
    -r            最大化核心文件限制
    -u <username> 以用户身份运行(only when run as root)
    -c <num>      最大并发连接数(default is 1024)
    -v            详细输出 (print errors/warnings while in event loop)
    -vv           更详细的输出 (also print client commands/reponses)
    -i            打印许可证信息
    -P <file>     PID文件
    -t <num>      线程数(default 4)
    --------------------BerkeleyDB Options-------------------------------
    -m <num>      BerkeleyDB内存缓存大小, default is 64MB
    -A <num>      底层页面大小, default is 4096, (512B ~ 64KB, power-of-two)
    -H <dir>      数据库家目录, default is '/data1/memcacheq'
    -L <num>      日志缓冲区大小, default is 32KB
    -C <num>      多少秒checkpoint一次, 0 for disable, default is 5 minutes
    -T <num>      多少秒memp_trickle一次, 0 for disable, default is 30 seconds
    -S <num>      多少秒queue stats dump一次, 0 for disable, default is 30 seconds
    -e <num>      达到缓存百分之多少需要刷新, default is 60%
    -E <num>      一个单一的DB文件有多少页, default is 16*1024, 0 for disable
    -B <num>      指定消息体的长度,单位字节, default is 1024
    -D <num>      多少毫秒做一次死锁检测(deadlock detecting), 0 for disable, default is 100ms
    -N            开启DB_TXN_NOSYNC获得巨大的性能改善, default is off
    -R            自动删除不再需要的日志文件, default is off

    启动MemcacheQ

    memcacheq -d -r -H /data1/memcacheq -N -R -v -L 1024 -B 1024 > /data1/mq_error.log 2>&1
    
    memcacheq -h 查看更多设置

    PHP代码

    <?php
    /* 连接memcacheq server */
    $memcache_obj = new Memcache();
    $memcache_obj->connect('localhost', 22201); // default port 22201
    
    /* 添加到对列 */
    $memcache_obj->set('demoqueue1', 'message body here1', MEMCACHE_COMPRESSED, 0);
    $memcache_obj->set('demoqueue1', 'message body here2', MEMCACHE_COMPRESSED, 0);
    $memcache_obj->set('demoqueue1', 'message body here3', MEMCACHE_COMPRESSED, 0);
    $memcache_obj->set('demoqueue1', 'message body here4', MEMCACHE_COMPRESSED, 0);
    
    /* 移出对列 */
    echo $memcache_obj->get('demoqueue1').'<br>';
    echo $memcache_obj->get('demoqueue1').'<br>';
    echo $memcache_obj->get('demoqueue1').'<br>';
    echo $memcache_obj->get('demoqueue1').'<br>';
    
    $memcache_obj->close();
    ?>

     

  • 相关阅读:
    实验二
    2
    DS博客作业08--课程总结
    DS博客作业07--查找
    DS博客作业06--图
    DS博客园作业05--树
    有向图强连通分量Tarjan算法
    nyoj 题目737 合并石子(一)
    nyoj 题目61 传纸条
    nyoj 题目49 开心的小明
  • 原文地址:https://www.cnblogs.com/ahwu/p/4478981.html
Copyright © 2020-2023  润新知