最近在整理有关分布式缓存的服务器,做了一下老牌nosql服务器memcached的学习总结。文中所述的所有安装均是在联网的情况下进行的。

序:

什么是memcached:

Free & open source, high-performance, distributed memory object caching system

自由、开源、高性能、分布式的内存对象缓存系统。

由livejounal旗下的danga公司开发的老牌的nosql应用

nosql:not  only sql,即不仅仅是关系型数据库。特点:key-value键值对存储,如memcached、redis或基于文档存储:如mongoldb

一、      使用前的准备(关于telnet)

  Telnet用于远程操作互联网中的设备或终端计算机服务器,可以有效的减少现场操作的麻烦。因为设备或终端是遍布整个省或市,有的甚至是国外,如何高效的处理问题是当务之急。除了telnet还可以ssh使用crt软件登陆,telnet开启的话比较方便windows自带的cmd命令行下就可以运行。

  telnet命令格式(cmd窗口下):telnet  localhost(ip地址)   端口号,如:telnet  192.168.5.109   11211

  Win7系统中使用想使用telnet命令时往往会出现如下错误:【'telnet'不是内部或外部命令,也不是可运行的程序或批处理文件】。

  解决方法:

    ①   首先打开[控制面板],找到[程序和功能],然后点击左侧的[打开或关闭Windows功能]

           

②   打开或关闭Windows功能

          

③   等待一会就OK啦

二、Linux下安装memcached

  1、安装编译工具gcc make libtool autoconfig 的命令:yum install gcc make libtool autoconfig

  2、安装memcached的依赖库命令:wget http://monkey.org/~provos/libevent-2.0.12-stable.tar.gz --no-check-certificate

3、wget http://www.memcached.org/files/memcached-1.4.29.tar.gz(memcached的源文件)

  4、先装依赖库。

假设源码在usr/local/src/下,需要安装到usr/local下:

解压:tar zxvf libevent-2.0.12-stable.tar.gz得到libevent-2.0.12-stable

进入解压包位置:#cd libevent-2.0.12-stable

指定安装位置(相关文件检查)# ./configure --prefix=/usr/local/libevent

编译安装:# make && make install

  5、memcached 的安装

解压:tar zxvf memcached-1.4.29.tar.gz得到memcached-1.4.29

进入解压包位置:#cd memcached-1.4.29

指定安装位置并指定依赖的libevent位置(相关文件检查):

    命令:# ./configure --prefix=/usr/local/memcached

    --with-libvent=prefix=/usr/local/libevent/

   编译安装:# make && make install

  注意:虚拟机下练习编译时容易遇到的一个问题:

  虚拟机的时间不对, 导致gcc编译过程中,检测时间通不过,一直处于编译过程。

解决方法:

#date      查看虚拟机当前时间(看是否与真实时间一致,不一致则:)

#date –s ‘yyyy-MM-dd hh:mm:ss’(真实时间)

    #clock –w   (把时间写入虚拟机的cmos)

6、linux系统下启动memcached(先到安装路径)

  # ./bin/memcached -m 64 -p 11211 -u nobody –vvv

  其中:-m 64用于指定内存大小为64MB

   -p 11211用于指定运行的端口号

  -u nobody用于指定运行的非root用户

   -vvv用于输出信息

注意-u nobody是指定非root用户的任何用户,linux的安全考虑,必须加的。

但上述启动方式存在一个问题,就是linux系统的memcached必须一直连着,不能断开,

  解决:# ./bin/memcached -m 64 -p 11211 -u nobody –d

  其中-d 指定memcached以后台进程的方式来运行

三、 连接memcached及一些操作

memcached客户端和服务器端的通信比较简单,使用的是基于文本的协议,而不是二进制协议(http协议也是如此),因此我们通过telnet即可与之对话。

上述步骤完成后,执行以下操作:

  1、Windows+R打开黑窗口,

  2、运行命令:telnet 192.168.XXX.XXX(虚拟机地址)  11211

  3、 Ctrl  +  】回车,打开回显,至此就可以做测试了

四、一些操作及memcached命令详解

  1、在步骤三的基础上,stats+回车,即可查看memcached的运行状态

  2、关于memcached的命令(增删该查4类)

  • 增:add  往内存增加一条新纪录

语法:add key flag expire length;如add  name 0 0  8,输入zhangsan

key:给值区一个独特的名字

flag:标志,要求为一个整数,当需要存储数组、对象等时,flag的意义就显示出来了。其意义自定:如0:字符串;1:数组等等

expire:有效期,三种设置方式:①、0标识不自动失效,默认最长30天(服务器一直启动而不发生被挤现象);②、设置秒数,从设置开始,第n秒后失效;③、设置时间戳,到指定时间戳失效

length:缓存的长度(字节为单位)

  • 删:delete key [time]

其中time参数可选,是指使key失效并在time秒内不允许用此key

  • 改:replace key flag expire length和add命令的参数一致
  • 查:get key
  • Set命令:和add命令参数一致,
add、replace、set三者的比较:

add只能针对内存中没有的key进行存储,若已经存在则增加不会成功。

replace:也只针对已经存在的key进行 修改,若被修改的键不存在,则修改失败。

set:兼具add和replace两者的功能,不存相应key,创建之,存在,修改之,很好理解。

  • incr和decr命令,把值理解为32位无符号数来进行加减操作,最小为0。如:

incr age 1   把age的值加1;

decr age 3   把age的值减3;

常见的应用为:

   电商项目的秒杀功能。一个人下单,要涉及数据库的读取、写入订单、更改库存及事物要求,对于传统电商来说,压力是非常大的。这时候可以利用memcached的incr或decr来进行操作。如设置秒杀数为100,每抢一单,执行一次decr count 1,并把结果和0比较,对于大于0的结果发送一个订单号,对于不大于0的count则不允许其进行秒杀。之后拿到订单号的用户到指定页面缓慢填写详细订单信息,从而很大程度上缓解了数据库抢单压力。

  • stats统计命令:用于显示memcached的运行信息。
缓存的一个重要概念:命中率

命中率:(查询到数据的个数/查询的总数)*100%;

一般来说,大系统中缓存的命中率能达到百分之四五十就已经相当不错了,能达到百分之七八十就很优秀了。

  • flush_all命令:慎用,用于清空所有的存储对象。

尾:本文简要的介绍了一下memcached的使用准备、Linux系统下的安装及win下的一些操作及memcached的一些命令,希望能给初学者带来些许帮助。

Memcached的安装(Linux)、操作、命令的更多相关文章

  1. Memcached的安装与常用命令

    一.概述 MSM:Memcached-Session-ManagerMemcached是一款高性能.分布式的内存对象缓存系统 二.安装Memcached 在安装Memcached之前,我们需要先安装上 ...

  2. memcached的安装、常用命令以及在实际开发中的案例

    Memcached注意缺乏安全认证以及安全管制需要将Memcached服务器放置在防火墙(iptables)之后 Linux平台 (CentOS)安装Memcached 安装依赖yum -y inst ...

  3. memcached的安装和linux下memcached服务自启动的配置

    关于memcached在windows和linux环境的安装,以及在Linux系统系memcached服务自启动的配置,可以参考我在csdn上下的博客, windows和linux环境下memcach ...

  4. Linux常用命令_(安装包管理)

    rpm命令: RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序” rpm -ivh rpm包安装rpm包rpm -Uvh rp ...

  5. Linux操作系统介绍

    1Linux操作系统介绍 1.1linux系统的应用 服务器系统:Web应用服务器.数据库服务器.接口服务器.DNS.FTP等等: 嵌入式系统:路由器.防火墙.手机.PDA.IP 分享器.交换器.家电 ...

  6. onvirt安装linux系统

    情况说明: (1)本文接前文kvm虚拟化学习笔记(十九)之convirt集中管理平台搭建,采用convirt虚拟化平台安装linux操作系统的过程,这个过程中需要对convirt进行一系列的配置才能真 ...

  7. Linux查看系统信息的一些命令及查看已安装软件包的命令

    转自:http://cheneyph.iteye.com/blog/824746 系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看 ...

  8. Cobbler自动化批量安装linux服务器的操作记录

    Cobbler为何物?Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便(才15k行python代码),使用简单的命 ...

  9. 【转发】Linux系统下安装rz/sz命令及使用说明

    对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令.今天,我们 ...

随机推荐

  1. python selenium自动化(二)自动化注册流程

    需求:使用python selenium来自动测试一个网站注册的流程. 假设这个网站的注册流程分为三步,需要提供比较多的信息: 在这个流程里面,需要用户填入信息.在下拉菜单中选择.选择单选的radio ...

  2. 用PC浏览器模拟手机浏览器(一):无扩展版

    想浏览手机版,打开对应网址却跳转到PC版?怎么办? 下面咱们来说下在只是安装了浏览器,无需其他安装操作的情况下来怎么用PC浏览器模拟手机浏览器,然后访问手机站点. 浏览器众多,IE系列的咱就不考虑了, ...

  3. Linux 进程管理剖析--转

    地址:http://www.ibm.com/developerworks/cn/linux/l-linux-process-management/index.html Linux 是一种动态系统,能够 ...

  4. iOS之原生地图与高德地图

    原生地图 1.什么是LBS LBS: 基于位置的服务 Location Based Service 实际应用:大众点评,陌陌,微信,美团等需要用到地图或定位的App 2.定位方式 1.GPS定位 2. ...

  5. dede只调用当天发布的文档

    dede只调用当天发布的文档 dede文章的调用 我需要织梦的模板分别调用,一天内发布的文章,三天内发布的文章,和七天内发布的文章,请问是代码是怎么写的,如何调用,如图所示. 点一天内,显示最近24的 ...

  6. [改善Java代码]多种最值算法,适时选择

    建议64:多种最值算法,适时选择. 对一批数据进行排序,然后找出其中的最大值或最小值,这是基本的数据结构知识.在Java中我们可以通过编写算法的方式,也可以通过数组先排序再取值的方式来实现.下面以求最 ...

  7. 【概率dp,难度3颗星】hdu-5001(2014鞍山网络赛)

    给你一个连通的无向图,等概率随机选取一个起点,走d步,每一步等概率走到相邻的点.问走完d步之后,每个点没有被经过的概率. 推状态的关键当然就是对这个“从任意起点走完d步点node没被经过的概率”的理解 ...

  8. nodejs自己在项目中使用的一个工具库utils.js文件

    文件内容如下: /** * utils.js */ var crypto = require('crypto'); var url = require('url'); var querystring ...

  9. 创建触发器在表中播入数据时ID自动增长

    ),age )) create or replace trigger gger_tt before insert on ttt for each row when (new.id is null) b ...

  10. Nginx HTTP User_agent

    假设我这里有大量图像.CSS.javascript等静态文件,分别放在后端服务器  192.168.1.5 和 192.168.1.6上,那么我如何利用nginx的反向代理功能将不同的 http_us ...