当前位置: 首页 > 编程日记 > 正文

memcacheq 服务安装与原理

memcacheQ是一个单纯的分布式消息队列服务。它的安装依赖于BerkeleyDB 和 libevent,所以要先安装这BerkeleyDB和libevent:

一,BerkeleyDB

  1. 下载软件包,http://download.oracle.com/berkeley-db/db-5.0.21.tar.gz
  2. 解压缩后,cd build_unix
  3. ../dist/configure
  4. make
  5. sudo make install

二,libevent (需要1.4.x 或更高)

  1. 下载软件包:http://monkey.org/~provos/libevent/
  2. 解压缩后configure & make & make install

三,memcacheQ

  1. 下载软件包:http://code.google.com/p/memcacheq/downloads/list
  2. 解压缩,cd进目录
  3. ./configure –with-bdb=/usr/local/BerkeleyDB.5.0 –with-libevent=/usr/local/lib –enable-threads
  4. make
  5. sudo make install

四,启动memcacheQ

  1. 使用memcacheq -h 的命令来查看命令行选项
  2. 启动memcacheq:memcacheq -d -r -H /data1/memcacheq -N -R -v -L 1024 -B 1024 > /data1/mq_error.log 2>&1

五,使用

使用以上命令启动mq后,(注意上面的-B参数表示messag的body长度不能超过1024 bytes),使用mq时只需要用到两个命令:set和get:

set <queue name> <flags> 0 <message_len>\r\n
<put your message body here>\r\n
STORED\r\n
get <queue name>\r\n
VALUE <queue name> <flags> <message_len>\r\n
<your message body will come here>\r\n
END\r\n

可以看到,和memcache协议基本一致,只是把key name换成queue name,而且在set的命令中,忽略了expire_time的参数。毕竟mq的数据存储是存在berkeleyDB中,做了持久化存储,没有内存的过期时间。

当使用set命令时,就向指定的消息队列中写入了一条新消息,也就是向BerkeleyDB中新insert了一条数据,当使用get命令时,就从 指定队列中取出一条新消息,也就是向BerkeleyDB中delete了一条数据。当使用stats查看一个指定队列时,可以看到这个队列一共接收了多 少消息,其中被取出了多少条。

示例:

fengbo@onlinegame-10-121:~$ telnet 127.0.0.1 22202
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘^]’.
set q4 0 0 5
hello
STORED
set q4 0 0 5
world
STORED
stats queue
STAT q4 2/0
END
get q4
VALUE q4 0 5
hello
END
stats queue
STAT q4 2/1
END

上面执行了两次set的命令,使用stats queue查看时,可以看到q4的队列中共有消息2条,已取出0条;当使用get取出第一条后,再此使用stats queue查看,q4中消息有2条,其中已取出1条。

相关文章:

AI 帮忙找 Bug ,英特尔开源代码编程工具 ControlFlag

整理 | 孙胜出品 | CSDN近日&#xff0c;英特尔开源了自动代码调试工具 ControlFlag 源代码&#xff0c;ControlFlag 源码现在可通过 GitHub 获得。据了解&#xff0c;ControlFlag 可用来帮助更多开发者自主检测代码错误&#xff0c;主要利用 AI 自动识别软件和固件代码中的错误…

一次心惊肉跳的服务器误删文件的恢复过程

经历了两天不懈努力&#xff0c;终于恢复了一次误操作删除的生产服务器数据。对本次事故过程和解决办法记录在此&#xff0c;警醒自己&#xff0c;也提示别人莫犯此错。也希望遇到问题的朋友能找到一丝灵感解决问题。事故背景安排一个妹子在一台生产服务器上安装Oracle,妹子边研…

【vue】vue中ref用法

1.获取当前元素&#xff1a; 例子&#xff1a; <div class"pop pos-a" :style"{ left: pop_x px ,top: pop_y px}" ref"refName"><ul><li>编辑部门</li><li click"append()">添加子部门</li>&…

使用Gearman做分布式计算

通常&#xff0c;多语言多系统之间的集成是个大问题&#xff0c;一般来说&#xff0c;人们多半会采用WebService的方式来处理此类集成问题&#xff0c;但不管采用何种风格的WebService&#xff0c;如RPC风格&#xff0c;或者REST风格&#xff0c;其本身都有一定的复杂性。相比之…

把数据库中有关枚举项值的数字字符串转换成文字字符串

原文:把数据库中有关枚举项值的数字字符串转换成文字字符串标题可能无法表达我的本意。比如&#xff0c;有这样一个枚举&#xff1a; public enum MyChoice{MyFirstChoice 0,MySecondChoice 1,MyThirdChoice 2} 数据库中&#xff0c;某表某字段保存值为"0,1,2"&…

又被 AI 抢饭碗?2457 亿参数规模,全球最大中文人工智能巨量模型 “源1.0”正式开源...

作者 | 伍杏玲 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;输入&#xff1a;昔我往矣&#xff0c;杨柳依依。今我来思&#xff0c;雨雪霏霏。行道迟迟&#xff0c;载渴载饥。我心伤悲&#xff0c;莫知我哀&#xff01;&#xff08;以战争为题写一首诗&#xff09…

Java架构演进之路

2019独角兽企业重金招聘Python工程师标准>>> hello 转载于:https://my.oschina.net/mrpei123/blog/1605391

F5与NetScaler比较

F5 是基于Linux的&#xff0c;NetScaler 是基于BSD的。F5 的四层走的是硬件芯片&#xff0c;七层走的是软件&#xff0c;NetScaler 全部走的是软件。我测试的性能也是 F5比NetScaler强&#xff0c;在均不使用压缩的情况下&#xff0c;NetScaler比F5消耗更大的带宽。

这个机器狗引起网友争议,「持枪机器狗」射程达1200米

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 如果提起自动机器狗&#xff0c;首先想到的应该是波士顿动力&#xff0c;自波士顿动力 Spot 推出以来&#xff0c;机器狗就解锁了很多应用场景。波士顿动力一直都禁止将机器狗武器化。 但是&#xff0c…

nutch如何发布插件

为什么80%的码农都做不了架构师&#xff1f;>>> 1.修改插件&#xff0c;在原有的插件上修改&#xff0c;比如parse-html插件上修改。 2.修改插件之后&#xff0c;把第三方的包放到/nutch/runtime/local/lib下&#xff08;经测试&#xff0c;只有在此目录下&#xf…

第 7 章 项目运作

comments powered by Disqus 原文出处&#xff1a;Netkiller 系列 手札 本文作者&#xff1a;陈景峯 转载请与作者联系&#xff0c;同时请务必标明文章原始出处和作者信息及本声明。

干货!整理了50个 Pandas 高频使用技巧,强烈建议收藏!

作者 | 俊欣来源 | 关于数据分析与可视化今天小编来分享在pandas当中经常会被用到的方法&#xff0c;篇幅可能有点长但是提供的都是干货&#xff0c;读者朋友们看完之后也可以点赞收藏&#xff0c;相信会对大家有所帮助&#xff0c;大致本文会讲述这些内容DataFrame初印象读取表…

CentOS的Gearman安装与使用无错版

通常&#xff0c;多语言多系统之间的集成是个大问题&#xff0c;一般来说&#xff0c;人们多半会采用WebService的方式来处理此类集成问题&#xff0c;但不管采用何种风格的WebService&#xff0c;如RPC风格&#xff0c;或者REST风格&#xff0c;其本身都有一定的复杂性。相比之…

putty或xshell上用vi/vim小键盘无法使用的解决方法

在putty或xshell上用vi/vim的时候&#xff0c;开NumLock时按小键盘上的数字键并不能输入数字&#xff0c;而是出现一个字母然后换行(实际上是命令模式上对应上下左右的键)。解决方法&#xff1a;putty&#xff1a;选项Terminal->Features里&#xff0c;找到Disable applicat…

Sqoop数据分析引擎安装与使用

Sqoop数据分析引擎安装与使用>什么是Sqoop ?Sqoop 是一个开源的数据处理引擎&#xff0c;主要是通过 JDBC 为媒介&#xff0c; 在Hadoop&#xff08;Hive&#xff09;与 传统的关系型数据库(Oracle, MySQL,Postgres等)间进行数据的传递HDFS Hive HBase < JD…

《独辟蹊径品内核:Linux内核源代码导读(china-pub首发)》的前言

我觉得作者讲的学习方法很好值得看看。 下面是本书作者所写&#xff1a; 几乎每一个操作系统内核的学习者在初学阶段都会感觉到难以入门。这是由于内核涉及到知识面非常广泛&#xff0c;需要学习者从根本上掌握大量的知识&#xff0c;这包括&#xff1a;程序编译&#xff0c;链…

95后架构师晒出工资单:狠补了这个,真香...

经常会有很多人说&#xff1a;“不是谁都可以成为架构师的。”“我们公司用的就是那点东西&#xff0c;不需要会太多。”“技术够用就行了。”…其实他们说的不错&#xff0c;但我也总觉得&#xff0c;程序员可以是一个非常热血的职业。即使不是人人都可以成为架构师&#xff0…

趣味图形之 余弦函数cos与直线相交(另一种相交)

高中的时候做的&#xff0c;前两天看了看&#xff0c;挺好玩的。只想说&#xff0c;当初的代码风格&#xff0c;&#xff0c;&#xff0c;&#xff0c;咳咳&#xff0c;算不上风骚&#xff01;#include <math.h> #include <stdio.h> int main (void) {double y;int…

AI时代:推荐引擎正在塑造人类

We shape our tools and afterwards our tools shape us. ------Marshall McLuhan 麦克卢汉说&#xff1a;“我们塑造了工具&#xff0c;反过来工具也在塑造我们。” 我本人不反感AI&#xff0c;也相信人工智能会开创一个伟大的时代&#xff0c;但是我们要思考一些东西&#xf…

mogileFS 分布式存储-安装手记

环境是centos 呃,装个玩意儿走了好多弯路,以为依赖太多的包河模块,搞了很久. 后来发现其实安装可以简化的,yum没有mogilefs,可以通过epel来安装. 第一种安装方法,用epel # rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm # yum…

英特尔成立物联网视频事业部,这届IESS还揭露了哪些信息?

随着5G技术的深入发展与落地&#xff0c;物联网已然成为当下炙手可热的技术话题。当万物相互连接&#xff0c;一个潜力丝毫不亚于互联网的市场就此诞生。驱动互联网的可能是网络&#xff0c;可能是算力&#xff0c;也可能是无数个开发者的开源和共享。那么驱动物联网的力量究竟…

JS数字转换成货币格式

2019独角兽企业重金招聘Python工程师标准>>> // Extend the default Number object with a formatMoney() method:// usage: someVar.formatMoney(decimalPlaces, symbol, thousandsSeparator, decimalSeparator)// defaults: (2, "$", ",", &q…

CentOS 部署 flask项目

原文地址 最近在学习 python&#xff0c;使用 flask 实现了个个人博客程序&#xff0c;完了想部署到服务器上。因为是新手&#xff0c;一路磕磕绊绊最终把它基本搞定。网上资料对新手感觉都不太友好&#xff0c;都是零零碎碎的&#xff0c;所以我整理了一下&#xff0c;一方面作…

Linux系统JDK安装和配置

以下步骤均为root登录状态下进行执行。 一、卸载JDK Linux会自带JDK&#xff0c;如果不使用自带版本的话需要卸载。 1、卸载系统自带的jdk版本 查看自带的jdk #rpm -qa | grep gcj 看到如下信息&#xff1a; libgcj-4.1.2-44.el5 java-1.4.2-gcj-compat-1.4.2.0-40jpp.1…

4000字,详解 Python 操作 MySQL 数据库!

作者 | 黄伟呢出品 | 数据分析与统计学之美本文的重点&#xff0c;就是教会大家&#xff0c;如何用Python来操作MySQL数据库。1. 通用步骤其实&#xff0c;这里有一个通用步骤&#xff0c;都是写死了的&#xff0c;大家照做就行。# 1. 导入相关库 import pymysql# 2. 链接MySQL…

php跨域共享session

、 $gb_DBHOSTname "127.0.0.1"; //主机的名称或是IP地址 02 $gb_DBname "dbname"; //数据库名称 03 $gb_DBuser "username"; //数据库用户名称 04 $gb_DBpass "pwd"; //数据库密码 05 $gb_COOKIE_DOMAIN .a.com; 06 $SESS_DBH …

centos6 防火墙iptables操作整理

使用语句 前言: iptables的启动文件位置再: /etc/init.d/iptables , srevice iptables调用的就是这里的执行文件 查看防火墙状态 service iptables status开启防火墙 service iptables start 关闭防火墙 service iptables stop永久关闭防火墙(开机不启动) chkconfig i…

分布式计算开源框架Hadoop入门实践

在SIP项目设计的过程中&#xff0c;对于它庞大的日志在开始时就考虑使用任务分解的多线程处理模式来分析统计&#xff0c;在我从前写的文章《Tiger Concurrent Practice --日志分析并行分解设计与实现》中有所提到。但是由于统计的内容暂时还是十分简单&#xff0c;所以就采用M…

网络配置文件、命令详解

一、网络服务、配置文件二、ifconfig常用命令三、route常用命令四、ip命常用命令五、其他一、网络服务、配置文件修改网络服务配置文件不会立即生效&#xff0c;重启网络服务或主机后生效且永久有效1、配置文件1.1、网络配置文件&#xff1a;/etc/sysconfig/network[rootTESTHO…

面了一个大佬,一看就背了很多面试题

2021都说工作不好找&#xff0c;其实也是对开发人员的要求变高了。正好前段时间自己有整理了一些Java后端开发面试常问的高频考点问题做成一份PDF文档&#xff08;1000道高频题&#xff09;&#xff0c;同时也整理一些图文解析及笔记。今天在这免费分享给大家&#xff0c;希望大…