高性能缓存库Memcached 基础教程

 
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即可,如下所示:

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不存在,添加指定键值对

    • replace        
      若当前键值Key存在,更新当前Value值

    • get               
      获取指定键值对

    • 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操作

向缓存中添加一个键值对,如果该键值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操作

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 的逻辑运算符的使用技巧和其内在逻辑

如果上述的文章帮助到了您,烦请您点击下面的图片或者下边栏投我一票哦~

时间: 2024-08-03 17:02:32

高性能缓存库Memcached 基础教程的相关文章

高性能缓存系统Memcached在ASP.NET MVC中应用

在Memcached中实体类型未经序列化不能在Memcached中缓存,因此需要对实体类进行处理,才能缓存下来. Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. 我们可以使用Memcached缓

高性能的分布式内存对象缓存系统Memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. 外文名 memcached 所    属 缓存系统 编写语言 不限 通信手段 memcached协议 目录 1功能 2特征 ? 协议 ? 事件处

python基础教程_学习笔记18:标准库:一些最爱——shelve

标准库:一些最爱 shelve Shelve唯一有趣的函数是open.在调用它的时候(使用文件名作为参数),它会返回一个Shelf对象,可以用它来存储内容.只需要把它当作普通的字典(但是键一定要作为字符串)来操作即可,在完成工作之后,调用它的close方法. 意识到shelve.open函数返回的对象并不是普通的映射是很重要的. >>> import shelve >>> s=shelve.open('a.txt') >>> s['x']=['a','

《Python基础教程(第二版)》学习笔记 -&gt; 第十章 充电时刻 之 标准库

SYS sys这个模块让你能够访问与Python解释器联系紧密的变量和函数,下面是一些sys模块中重要的函数和变量: 函数和变量 描述 argv 命令行参数,包括脚本和名称 exit([arg])                退出当前的程序,可选参数为给定的返回值或者错误信息 modules 映射模块名字到载入模块的字典 path 查找模块所在目录的目录名列表 platform 平台标识符 stdin 标准输入流-- 一个类文件对象 stdout 标准输出流-- 一个类文件对象 stderr

python基础教程_学习笔记15:标准库:一些最爱——fileinput

标准库:一些最爱 fileinput 重要的函数 函数 描述 input([files[,inplace[,backup]]) 便于遍历多个输入流中的行 filename() 返回当前文件的名称 lineno() 返回当前(累计)的名称 filelineno() 返回当前文件的行数 isfirstline() 检查当前行是否是文件的第一行 isstdin() 检查最后一行是否来自sys.stdin nextfile() 关闭当前文件,移动到下一个文件 close() 关闭序列 fileinput

python基础教程_学习笔记16:标准库:一些最爱——random

标准库:一些最爱 random random模块包括返回随机数的函数,可以用于模拟或者用于任何产生随机输出的程序. 事实上,所产生的数字都是伪随机数,它们以一个可预测的系统作为基础,除非是为了强加密的目标,否则这些随机数还是足够随机的.如果真的需要随机性,可以使用os模块的urandom函数. 重要函数 函数 描述 random() 返回0<=n<1之间的随机实数n,其中0<n<=1 getrandbits(n) 以长整型形式返回n个随机位(二进制数) uniform(a,b) 返

python基础教程_学习笔记17:标准库:一些最爱——time

标准库:一些最爱 time time模块所包含的函数能够实现以下功能: 获取当前时间.操作系统时间和日期.从字符串读取时间以及格式化时间为字符串. 日期可以用实数(从"新纪元"的1月1日0点开始计算到现在的秒数,新纪元是一个与平台相关的年份,对unix来说是1970年),或者是包含有9个整数的元组. 日期元组的字段含义 如元组: (2008,1,21,12,2,56,0,21,0) 表示2008年1月21日12时2分56秒,星期一,且是当年的第21天(无夏令时). 索引 字段 值 0

python基础教程_学习笔记14:标准库:一些最爱——re

标准库:一些最爱 re re模块包含对正则表达式的支持,因为曾经系统学习过正则表达式,所以基础内容略过,直接看python对于正则表达式的支持. 正则表达式的学习,见<Mastering Regular Expressions>(精通正则表达式) re模块的内容 最重要的一些函数 函数 描述 compile(pattern[,flags]) 根据包含正则表达式的字符串创建模式对象 search(pattern,string[,flags]) 在字符串中寻找模式 match(pattern,st

python基础教程_学习笔记20:标准库:一些最爱——os

标准库:一些最爱 os os模块为你提供了访问多个操作系统服务的功能. os和它的子模块os.path还包括一些用于检查.构造.删除目录和文件的函数,以及一些处理路径的函数. os模块中一些重要函数和变量 函数/变量 描述 environ 对环境变量进行映射 system(command) 在子shell中执行操作系统命令 sep 路径中的分隔符 pathsep 分隔路径的分隔符 linesep 行分隔符('\n','\r','\r\n') urandom(n) 返回n字节的加密强随机数据 os