版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1432210
CSDN-2014博客之星投票啦
CSDN-2014博客之星 评选开始啦,如果您觉得我的文章对您有所帮助,请您点击左边栏的图片投我一票,您的支持是我分享知识的强大动力!
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。
本文主要介绍如何在Linux系统CENTOS 7 下安装最新版的Memcached ,并且详细介绍Memcached 的启动和关闭细节,以及如何在Window7 下使用telnet远程连接 Memcached , 最后着重介绍了关于Memcached 的各种数据操作指令。
本文涉及到以下几个方面:
1.memcached 的安装 2. memcached 的启动和关闭 3. memcached 各种数据指令操作
1. Linux (CentOS 7)下的memcached 的安装
Step1. 安装libevent
由于memcached依赖于libevent库,需要先安装它,在CentOS Console控制台输入以下命令(“#”号一行是注释,不需要执行的哦):
#step1. 安装libevent-devel yum install libevent-devel 执行结果类似如下:
Step2. 下载Memcacehd并解压
#使用wget 指令下载最新包 wget http://memcached.org/latest
下载后会生成一个latest文件,该文件实际上是*.tar.gz 类型的文件。然后使用如下命令将其解压:
#解压latest tar -zxvf latest
解压后会生成对应的memcached 目录,当前最新版本的memcached生成的目录是memcached-1.4.22,如下所示
Step3. 安装memcached
上述文件解压后会生成memcached目录,进入该目录,执行如下安装指令: #进入memcached目录,并安装之 cd memcached-1.x.x ./configure && make && sudo make install
如果没有明显报错,则表示正确安装。
Step4. 测试是否安装成功
1.开启memcached服务: memcached -d -p 11211 -m 256 使用上述的指令是以守护进程的形式开启memcached服务,端口为11211,使用256MB大小的内存空间存储数据。
具体的memcached指令的参数设置,请关注下一节。
2. 使用telnet进行连接
我在CENTOS下 安装的memcached,现在我将在Windows7 下使用telnet连接memcached
a. 开启Windows7 控制台,输入: telnet memcached_IP memcached_PORT
b. 按Enter后,进入如下的页面:按Enter后,如果正常连接,会显示如此图所示的黑框框,输入任何东西都不会显现出来,看不到任何东西,这是因为Win7 中将telnet 回显功能关闭了,这时候需要手动设置回显。
c. 对当前框同时按下 “CTRL ”和“]” 健,将进入如下页面:
d. 输入 “set localecho”,开启回显telnet回显功能
e. 按下Enter键,进入telnet 交互界面,这时候用户可以看到自己的输入了,并且可以看到连接的memcached返回的交互信息:
#向memcached存放一个key为variable、值为“louis”的键值对 set variable1 0 0 5 #取出key为variable的值 get variable
至此,你就可以使用你的memcached啦。这里只是介绍了怎样安装它和简单的使用。
2. 接下来就要具体介绍memcached的启动和关闭
a. memcached的启动
启动memcached 很简单,在shell中输入memcached即可,如下所示:
undefined memcached 上述的命令会启动一个memcached服务,默认服务端口是11211。如果你想更大程度地定制你的memcached 你可以使用memcached指令的参数来设置。 如果我们正确地安装了memcached,那么,在shell中会有memcached指令,memcached指令负责memcached缓存库的参数的配置和启动。
memcached指令的详细使用方法,可以使用 memcached -help 查看,下面介绍几个影响到memcached性能的几个参数:
常用的配置如下图所示:
-d, 该参数会将以守护线程的形式启动memcached。区别如下所示:
b.memcached 服务的关闭
memcached服务的关闭比较笨拙,没有提供相应的简单的指令,要关闭memcached服务,就是要查找对应memcached的进程号,然后将对应的进程杀死。
方法1.手动关闭memcached服务
a. 查看当前有多少个memcached 进程:
ps -ef | grep memcached
b. 找到要关闭memcached 对应的进程号PID,然后执行:
kill -9 PID
方法2. 创建时保存进程PID到文件,关闭的时候直接从文件获取PID
在memcached服务 创建的时候,可以使用-P PidFile,将此memcached 服务的进程号PID保存到文件中,但需要关闭此memcached服务时,直接读取对应文件的PID,然后使用kill -9 PID 杀死即可。
3. memcached 的操作指令
memcached本质上就是内存中的一个Map键值对集合,对于这个Map基本操作有以下几个:
- 基本数据操作
- set 设置指定键值对
- **add** 若当前键值Key不存在,添加指定键值对
代码语言:txt复制- **replace** 若当前键值Key存在,更新当前Value值
代码语言:txt复制- **get** 获取指定键值对
代码语言:txt复制- **delete** 删除指定键值对
- 高级数据操作
- gets 获取键值key对应的值,返回信息中携带版本号
- **cas** 指定版本号对键值key进行赋值,版本号不匹配,允许赋值
- 缓存管理操作
- stats 统计当前memcached 的数据信息。
- flush_all 清空当前memcached 服务的所有缓存数据
基本数据操作:set、add、replace操作 set、add、replace操作的格式相同,如下图所示:
注意:
1. set、add、replace 操作指令需要输入两行才能完成,第一行是指令前段,第二行是value值; 2. set、add、replace操作指定的字节数<length> 参数的大小要和第二行输入的字符串的个数保持完全相同,否则将会报:“CLIENT_ERROR bad data chunk”
1、set操作
set
命令用于向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。
如上图所示,如果set指令正确执行,memcached将会返回一个“STORED”信息,表示该指令被正确处理、已经将缓存数据放到了memcached中。
2. add操作
代码语言:txt复制向缓存中添加一个键值对,如果该键值key在缓存中尚未存在,则该键值对将添加到memcached缓存中;如果该键值已经存在了,那么保留以前的值,向客户端返回“NOT STORED”
3. replace操作
仅当键已经存在时,replace
命令才会替换缓存中的键。如果缓存中不存在键,那么您将从 memcached 服务器接受到一条NOT_STORED 响应。
基本数据操作:get、delete操作 get和delete操作的格式比较简单,格式如下:
<command> <key>
4. get 操作
从缓存中根据key值取数据。如果缓存中有数据,这返回该数据;如果缓存中没有,则什么都不返回。
5. delete 操作
delete
命令用于删除 memcached 中的任何现有值。您将使用一个键调用 delete
,如果该键存在于缓存中,则删除该值。如果不存在,则返回一条NOT_FOUND 消息。
高级数据操作:gets、cas操作 6. gets操作
gets操作和get操作的功能差不多,但它比get都返回一个信息:即这个键值对的“版本号”,版本号是使用64位的整形值表示的。memcached在以键值对进行存储的时候,会统计键值key的使用情况,每次以键值key进行增、删、改操作键值对的时候,该键值key代表的键值对的版本都会递增。
操作形式为:
gets key
操作如下:
7. cas操作
代码语言:txt复制cas操作是(**check and set**)的缩写,在针对某个键值key设置对应的值的时候,要加上键值key目前的版本号。如果你指定的版本号比和键值Key的实际版本号不一致时,不会进行set操作,返回“EXISTS”提示。
cas 的操作语法如下:
cas key flags expiration_time length version
管理操作:stats、flush_all 操作 8. stats
stats 是statistics单词的拼写,即统计的意思。该指令攻击当前memcached服务的各种指标。这些指标跟memcached 的性能和工作状况紧密相关。
9. flush_all
flus_all 指令用于清空memcached中所有的键值对。
文章参考:
安装和使用memcached
CSDN-2014博客之星投票啦 CSDN-2014博客之星评选开始啦,以下是我在2014年发表的博文,如果您觉得我的文章对您有所帮助, 请您点击右侧图片进入投票页面投我一票哦! Java 虚拟机方面: 《Java虚拟机原理图解》 1.1、class文件基本组织结构 《Java虚拟机原理图解》 1.2、class文件中的常量池 《Java虚拟机原理图解》 1.2.2、Class文件中的常量池详解(上) 《Java虚拟机原理图解》 1.2.3、Class文件中的常量池详解(下) 《Java虚拟机原理图解》1.3、class文件中的访问标志、类索引、父类索引、接口索引集合 《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的 《Java虚拟机原理图解》1.5、 class文件中的方法表集合--method方法在class文件中是怎样组织的 《Java虚拟机原理图解》3、JVM运行时数据区 mybatis方面: 《深入理解mybatis原理》 MyBatis缓存机制的设计与实现 《深入理解mybatis原理》 MyBatis的二级缓存的设计原理 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项 《深入理解mybatis原理》 MyBatis事务管理机制 《深入理解mybatis原理》 Mybatis初始化机制详解 《深入理解mybatis原理》 Mybatis数据源与连接池 如何细粒度地控制你的MyBatis二级缓存(mybatis-enhanced-cache插件实现) mybatis关联查询问题(一对多、多对一) Java Persistence with MyBatis 3(中文版) Java Persistence with MyBatis 3(中文版) 前言 Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门 Java Persistence with MyBatis 3(中文版) 第二章 引导MyBatis Java Persistence with MyBatis 3(中文版) 第三章 使用XML配置SQL映射器 Java Persistence with MyBatis 3(中文版) 第四章 使用注解配置SQL映射器 Java Persistence with MyBatis 3(中文版) 第五章 与Spring集成 mybatis关联查询问题(一对多、多对一) Java语言基础方面: Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM) Java 反射机制 [Java基础要义] HashMap的设计原理和实现分析 Java语言中Object对象的hashCode()取值的底层算法是怎样实现的? 老调重弹:JDBC系列 之 <驱动加载原理全面解析> 老调重弹:JDBC系列 之 <JDBC层次结构和基本构成> 老调重弹:JDBC系列 之 存储过程 CallableStatement(创建和使用) 设计模式方面: Java 设计模式 适配器模式 Java 设计模式 之 facade(外观)设计模式 Java 设计模式 代理模式 Java 设计模式 装饰者模式 Java 设计模式 工厂模式 Junit4 测试方面 : Junit 4 Tutorials(Junit 4 教程) Junit 4 Tutorials(Junit 4 教程) 一、Junit简介及Junit Eclipse 教程 Junit 4 Tutorials(Junit 4 系列教程) 二、Junit4 注解 Junit 4 Tutorials(Junit 4 教程) 三、Junit4 断言方法 Junit 4 Tutorials(Junit 4 教程) 四、Junit4 参数化测试 Junit 4 Tutorials(Junit 4 教程) 五、测试套件 Junit 4 Tutorials(Junit 4 教程) 六、忽略测试 Junit 4 Tutorials(Junit 4 教程) Junit4 七、超时测试 Javascript方面: JavaScript 的继承机制(图文) 解析Javascript事件冒泡机制 JavaScript 事件委托 以及jQuery对事件委托的支持 基于HTML5 Canvas和jQuery 的画图工具的实现 Javascript 的逻辑运算符的使用技巧和其内在逻辑