[实践OK]MemcacheQ 消息队列的安装,PHP结合memcacheq消息队列解决并发问题,在shell上连接、增、删、查运行的MQ队列服务。
背景:关于队列,Linux底层已有数据结构支持,也有Erlang写的rabbitQ,这个MemcacheQ和张宴兄弟的httpsqs一样的基于libevent的http接口加上BerkeleyDB(现在好你没更新了吧?),应该还是相当稳定的,有时间安个试试。
安装实践的过程如下,Libevent已经在我的虚拟机里安过了,不再描述,安装来源:http://blog.sina.com.cn/s/blog_a0db295e01015eqt.html
开始安装:
(1)berkeley-db:
http://download.oracle.com/otn/berkeley-db/db-5.3.15.tar.gz
~/software/db-5.3.15/build_unix# ../dist/configure --prefix=/usr/local/webserver/berkeleyDB && make && make install
(2)memcacheq:
http://code.google.com/p/memcacheq/downloads/list
~/software/memcacheq-0.2.0# ./configure --prefix=/usr/local/webserver/memcacheq --enable-threads --with-libevent --with-bdb=/usr/local/webserver/berkelyDB
#-j 8
make -j 8
make install
注意:在没有安装BerkeleyDB的情况下,会提示( configure: error: cannot find libdb.so in /usr/local/BerkeleyDB.5.3/lib);
It is normal verbose message. If you dont want to keep it, you can start without '-v'.
make && make install
测试是否安装成功:
/usr/local/webserver/memcacheq/bin/memcacheq -h
如果报错:
memcacheq: error while loading shared libraries: libdb-5.3.so: cannot open shared object file: No such file or directory
解决方法:
ln -s /usr/local/webserver/BerkeleyDB.5.3/lib/libdb-5.3.so /usr/lib/libdb-5.3.so
ldconfig
之前可先根据实际安装路径配置链接库:
可以修改/etc/ld.so.conf,增加BDB和libevent的库路径(建议)
/usr/local/BerkeleyDB.5.0/lib
/usr/local/lib
也可以临时export LD_LIBRARY_PATH=/usr/local/BerkeleyDB.5.0/lib/:/usr/local/lib:$LD_LIBRARY_PATH
(3)启动服务:
/usr/local/webserver/memcacheq/bin/memcacheq -d -r -uroot -p11212 -H /data0/memcacheq/data -N -R -v -L 1024 -B 1024 /data/logs/mq_error.log 2>&1
(/data0/memcacheq/data 必须自己创建)
mkdir -p /data0/memcacheq/data
chmod -R 777 /data0/memcacheq/data
(4)检查是否启动成功:
ps -aux |grep memcacheq
(5)增加到开机启动:
编辑 /etc/rc.local
增加以下内容:
/usr/local/webserver/memcacheq/bin/memcacheq -d -r -uroot -p11212 -H /var/memcacheq/data -N -R -v -L 1024 -B 1024 /data/logs/mq_error.log 2>&1
(6)参数不对容易出现"qstats dump thread: a qstats is dump.",请加上参数v:
(It is normal verbose message. If you dont want to keep it, you can start without '-v'.)
nohup /usr/local/memcacheq/bin/memcacheq -d -u www -p61611 -r -H /usr/local/memcacheq/data -N -v -L 1024 -B 1023 > /usr/local/memcacheq/logs/mq_error.log 2>&1
MemcacheQ使用以及与PHP连接 实验之shell下telnet操作该queque:
实践来源,MemcacheQ使用以及与PHP连接:(里面有shell操作队列的方法,很适用!)
http://ifxoxo.com/use-memcacheq.html
开始实践:
1)set 增加一个信息到队列的尾部
telnet 127.0.0.1 11212
set <queue name> <flags> 0 <message_len>
<put your message body here>
STORED
#示例
#插入第一条数据
set test_queue 0 0 13
first_message
STORED
#插入第二条数据
set test_queue 0 0 8
message2
STORED
实践如下:
注:信息不能大于message_len。大于message_len会报错.message_len以字节为单位。
#超出长度时示例
set test_queue 0 0 2
tes
CLIENT_ERROR bad data chunk
ERROR
#你超出message_len范围后会报错,错误的数据集。
2)查看队列:stats queue
3)get 从队列的头部查询一条信息并销毁:
get <queue name>
VALUE <queue name> <flags> <message_len>
<your message body will come here>
END
#示例:
get test_queue
VALUE test_queue 0 13
first_message
END
#可以看出是查询的第一个插入的信息。
4)delete 删除队列:
delete <queue name>
#示例:
delete test_queue
DELETED
#此时再查看队列状态:
stats queue
END
#已经删除了。
———————与php 连接———————
注意:和php连接,需要事先安装memcache的php扩展,如未安装,可以点击: linux下安装PHP扩展:Memcache
linux下安装PHP扩展:Memcache的文章来源:http://ifxoxo.com/memcache-install.html 其实就是安装memcache的扩展,如果网站以前有连接memcache,现在就不用安了。
PHP示例:
root@192.168.0.6:/data0/htdocs/blog# php testmemcacheq.php
注释:memcache_get($memcache_obj, 'demoqueue1');并执行后:
root@192.168.0.6:/data0/htdocs/blog# telnet 127.0.0.1 11212
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get demoqueue1
VALUE demoqueue1 0 17
反过来,设置shell后,用php扩展去获取(注意用shell操作时最后的数字长度最好大于写的字符长度,否则报错:CLIENT_ERROR bad data chunk。):
PHP代码获取如下:
root@192.168.0.6:/data0/htdocs/blog# php testmemcacheq.php
te
________________摘自其他项目团队的php代码_______________
_____________________________________________________
罗列安装使用的Url如下:
http://blog.sina.com.cn/s/blog_a0db295e01015eqt.html
http://ifxoxo.com/use-memcacheq.html
来自:http://www.com133.com/56
HttpSQS:
http://blog.s135.com/httpsqs/
PHP下的使用方法:http://memcachedb.org/memcacheq/
sina微博队列memcacheq 服务安装与原理:
http://blog.163.com/song_0803/blog/static/46097597201131510533947/
安装实践的过程如下,Libevent已经在我的虚拟机里安过了,不再描述,安装来源:http://blog.sina.com.cn/s/blog_a0db295e01015eqt.html
开始安装:
(1)berkeley-db:
http://download.oracle.com/otn/berkeley-db/db-5.3.15.tar.gz
~/software/db-5.3.15/build_unix# ../dist/configure --prefix=/usr/local/webserver/berkeleyDB && make && make install
(2)memcacheq:
http://code.google.com/p/memcacheq/downloads/list
~/software/memcacheq-0.2.0# ./configure --prefix=/usr/local/webserver/memcacheq --enable-threads --with-libevent --with-bdb=/usr/local/webserver/berkelyDB
#-j 8
make -j 8
make install
注意:在没有安装BerkeleyDB的情况下,会提示( configure: error: cannot find libdb.so in /usr/local/BerkeleyDB.5.3/lib);
It is normal verbose message. If you dont want to keep it, you can start without '-v'.
make && make install
测试是否安装成功:
/usr/local/webserver/memcacheq/bin/memcacheq -h
如果报错:
memcacheq: error while loading shared libraries: libdb-5.3.so: cannot open shared object file: No such file or directory
解决方法:
ln -s /usr/local/webserver/BerkeleyDB.5.3/lib/libdb-5.3.so /usr/lib/libdb-5.3.so
ldconfig
之前可先根据实际安装路径配置链接库:
可以修改/etc/ld.so.conf,增加BDB和libevent的库路径(建议)
/usr/local/BerkeleyDB.5.0/lib
/usr/local/lib
也可以临时export LD_LIBRARY_PATH=/usr/local/BerkeleyDB.5.0/lib/:/usr/local/lib:$LD_LIBRARY_PATH
(3)启动服务:
/usr/local/webserver/memcacheq/bin/memcacheq -d -r -uroot -p11212 -H /data0/memcacheq/data -N -R -v -L 1024 -B 1024 /data/logs/mq_error.log 2>&1
(/data0/memcacheq/data 必须自己创建)
mkdir -p /data0/memcacheq/data
chmod -R 777 /data0/memcacheq/data
(4)检查是否启动成功:
ps -aux |grep memcacheq
(5)增加到开机启动:
编辑 /etc/rc.local
增加以下内容:
/usr/local/webserver/memcacheq/bin/memcacheq -d -r -uroot -p11212 -H /var/memcacheq/data -N -R -v -L 1024 -B 1024 /data/logs/mq_error.log 2>&1
(6)参数不对容易出现"qstats dump thread: a qstats is dump.",请加上参数v:
(It is normal verbose message. If you dont want to keep it, you can start without '-v'.)
nohup /usr/local/memcacheq/bin/memcacheq -d -u www -p61611 -r -H /usr/local/memcacheq/data -N -v -L 1024 -B 1023 > /usr/local/memcacheq/logs/mq_error.log 2>&1
MemcacheQ使用以及与PHP连接 实验之shell下telnet操作该queque:
实践来源,MemcacheQ使用以及与PHP连接:(里面有shell操作队列的方法,很适用!)
http://ifxoxo.com/use-memcacheq.html
开始实践:
1)set 增加一个信息到队列的尾部
telnet 127.0.0.1 11212
set <queue name> <flags> 0 <message_len>
<put your message body here>
STORED
#示例
#插入第一条数据
set test_queue 0 0 13
first_message
STORED
#插入第二条数据
set test_queue 0 0 8
message2
STORED
实践如下:
注:信息不能大于message_len。大于message_len会报错.message_len以字节为单位。
#超出长度时示例
set test_queue 0 0 2
tes
CLIENT_ERROR bad data chunk
ERROR
#你超出message_len范围后会报错,错误的数据集。
2)查看队列:stats queue
3)get 从队列的头部查询一条信息并销毁:
get <queue name>
VALUE <queue name> <flags> <message_len>
<your message body will come here>
END
#示例:
get test_queue
VALUE test_queue 0 13
first_message
END
#可以看出是查询的第一个插入的信息。
4)delete 删除队列:
delete <queue name>
#示例:
delete test_queue
DELETED
#此时再查看队列状态:
stats queue
END
#已经删除了。
———————与php 连接———————
注意:和php连接,需要事先安装memcache的php扩展,如未安装,可以点击: linux下安装PHP扩展:Memcache
linux下安装PHP扩展:Memcache的文章来源:http://ifxoxo.com/memcache-install.html 其实就是安装memcache的扩展,如果网站以前有连接memcache,现在就不用安了。
PHP示例:
root@192.168.0.6:/data0/htdocs/blog# php testmemcacheq.php
注释:memcache_get($memcache_obj, 'demoqueue1');并执行后:
root@192.168.0.6:/data0/htdocs/blog# telnet 127.0.0.1 11212
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get demoqueue1
VALUE demoqueue1 0 17
反过来,设置shell后,用php扩展去获取(注意用shell操作时最后的数字长度最好大于写的字符长度,否则报错:CLIENT_ERROR bad data chunk。):
PHP代码获取如下:
root@192.168.0.6:/data0/htdocs/blog# php testmemcacheq.php
te
________________摘自其他项目团队的php代码_______________
_____________________________________________________
罗列安装使用的Url如下:
http://blog.sina.com.cn/s/blog_a0db295e01015eqt.html
http://ifxoxo.com/use-memcacheq.html
来自:http://www.com133.com/56
HttpSQS:
http://blog.s135.com/httpsqs/
PHP下的使用方法:http://memcachedb.org/memcacheq/
sina微博队列memcacheq 服务安装与原理:
http://blog.163.com/song_0803/blog/static/46097597201131510533947/
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/7082/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2014-8-12 15:09
评论列表