Memcached是一个高性能的分布式内存缓存服务器。 一般的使用目的是:通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。

许多Web应用都将数据保存到DB中,应用服务器从DB中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现DB的负担加重、数据库响应恶化、 网站显示延迟等重大影响。这时就该memcached大显身手了。

Memcached的特征

Memcached作为高速运行的分布式缓存服务器,具有以下的特点:

协议简单

基于libevent的事件处理

内置内存存储方式

memcached不互相通信的分布式

下面就Memcached的每个特征进行解释。

1.协议简单

Memcached服务器和客户端之间的通信并不使用复杂的XML等格式, 而使用简单的基于文本行的协议。因此,通过telnet 也能在Memcached上保存数据、取得数据。

Shell

1

2

3

4

5

6

7

8

9

10

$telnetlocalhost11211

Trying127.0.0.1...

Connectedtolocalhost.localdomain(127.0.0.1).

Escapecharacteris'^]'.

setfoo003(保存命令)

bar(数据)

STORED(结果)

getfoo(取得命令)

VALUEfoo03(数据)

bar(数据)

2. 基于libevent的事件处理

libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能 封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。 memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。 关于事件处理这里就不再详细介绍,可以参考Dan Kegel的The C10K Problem。

3.内置内存存储方式

为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。 由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。 另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。 memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。 关于内存存储的详细信息,本连载的第二讲以后前坂会进行介绍,请届时参考。

4.memcached不互相通信的分布式

memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。 各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢? 这完全取决于客户端的实现。本连载也将介绍memcached的分布式。

Memcached安装方法

安装Memcached比较简单,并且Memcached支持很多平台,Linux,FreeBSD,Solaris,Mac OS X甚至也能安装在Windows上。这里以Ubuntu为例:

首先需要先安装libevent,此时最新版本为:libevent-2.0.22-stable.tar.gz    下载地址:http://libevent.org/

下载并解压到 /opt/soft/libevent-2.0.22-stable 里,运行命令安装:

Shell

1

2

3

4

5

6

7

cd/opt/soft/libevent-2.0.22-stable

./configure–prefix=/usr

make

sudomakeinstall

下载Memcached包,下载地址:http://memcached.org/,并解压至 /opt/soft/memcached-1.4.22,运行命令安装:

Shell

1

2

3

4

5

6

7

cd/opt/soft/memcached-1.4.22/

./configure

make

sudomakeinstall

默认情况下memcached安装到/usr/local/bin下。

Memcached启动

在终端里输入命令,启动Memcached服务:

启动Memcached命令

Shell

1

/usr/local/bin/memcached-p11211-m64m-vv

然后出现,下面如图所示调试信息:

Shell

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

slabclass1:chunksize96perslab10922

slabclass2:chunksize120perslab8738

slabclass3:chunksize152perslab6898

slabclass4:chunksize192perslab5461

slabclass5:chunksize240perslab4369

slabclass6:chunksize304perslab3449

slabclass7:chunksize384perslab2730

slabclass8:chunksize480perslab2184

slabclass9:chunksize600perslab1747

slabclass10:chunksize752perslab1394

slabclass11:chunksize944perslab1110

slabclass12:chunksize1184perslab885

slabclass13:chunksize1480perslab708

slabclass14:chunksize1856perslab564

slabclass15:chunksize2320perslab451

slabclass16:chunksize2904perslab361

slabclass17:chunksize3632perslab288

slabclass18:chunksize4544perslab230

slabclass19:chunksize5680perslab184

slabclass20:chunksize7104perslab147

slabclass21:chunksize8880perslab118

slabclass22:chunksize11104perslab94

slabclass23:chunksize13880perslab75

slabclass24:chunksize17352perslab60

slabclass25:chunksize21696perslab48

slabclass26:chunksize27120perslab38

slabclass27:chunksize33904perslab30

slabclass28:chunksize42384perslab24

slabclass29:chunksize52984perslab19

slabclass30:chunksize66232perslab15

slabclass31:chunksize82792perslab12

slabclass32:chunksize103496perslab10

slabclass33:chunksize129376perslab8

slabclass34:chunksize161720perslab6

slabclass35:chunksize202152perslab5

slabclass36:chunksize252696perslab4

slabclass37:chunksize315872perslab3

slabclass38:chunksize394840perslab2

slabclass39:chunksize493552perslab2

slabclass40:chunksize616944perslab1

slabclass41:chunksize771184perslab1

slabclass42:chunksize1048576perslab1

<26serverlistening(auto-negotiate)

<27serverlistening(auto-negotiate)

<28sendbufferwas212992,now268435456

<32sendbufferwas212992,now268435456

<30serverlistening(udp)

<29serverlistening(udp)

<34serverlistening(udp)

<28serverlistening(udp)

<33serverlistening(udp)

<31serverlistening(udp)

<32serverlistening(udp)

<35serverlistening(udp)

这样就在前台启动了memcached,监听TCP端口11211 最大内存使用量为64M。调试信息的内容大部分是关于存储的信息。而作为daemon后台启动时,命令时这样的:

Shell

1

/usr/local/bin/memcached-p11211-m64m-d

这里使用的memcached启动选项的内容如下:

选项

说明

-p

使用的TCP端口。默认为11211

-m

最大内存大小。默认为64M

-vv

用very vrebose模式启动,调试信息和错误输出到控制台

-d

作为daemon在后台启动

上面四个是常用的启动选项,其他还有很多,通过下面一段命令:

Shell

1

/usr/local/bin/memcached-h

就可以显示全部命令,许多选项可以改变memcached的各种行为, 推荐仔细阅读一下。

至此,服务器端Memcache算是安装成功了。当然作为高并发Memcached缓存服务器来说,需要仔细推敲下启动参数,以达到最优化。

memcached 注册服务器,Memcached深入剖析(一)—Memcached服务器安装相关推荐

  1. 艾伟:memcached全面剖析–3.memcached的删除机制和发展方向

    本系列文章导航 memcached完全剖析–1. memcached的基础 memcached全面剖析–2.理解memcached的内存存储 memcached全面剖析–3.memcached的删除机 ...

  2. memcached全面剖析--3.memcached的删除机制和发展方向

    下面是<memcached全面剖析>的第三部分. 发表日:2008/7/16 作者:前坂徹(Toru Maesaka) 原文链接:http://gihyo.jp/dev/feature/0 ...

  3. memcached全面剖析 –3.memcached的删除机制和发展方向

    來源:http://tech.idv2.com/2008/07/16/memcached-003/ 作者:charlee 版权声明 :可以任意转载,但转载时必须标明原作者charlee.原始链接htt ...

  4. memcached 缓存服务器

    Memcached 缓存服务器 Memcached 是高性能的分布式内存缓存服务器. 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度.提高可扩展性. 主要特点 ...

  5. memcached全面剖析–4. memcached的分布式算法

    本次不再介绍memcached的内部结构, 开始介绍memcached的分布式. memcached的分布式 正如第1次中介绍的那样, memcached虽然称为"分布式"缓存服务 ...

  6. memcached全面剖析–3.memcached的删除机制和发展方向

    memcached是缓存,所以数据不会永久保存在服务器上,这是向系统中引入memcached的前提. 本次介绍memcached的数据删除机制,以及memcached的最新发展方向--二进制协议(Bi ...

  7. memcached完全剖析–1. memcached的基础

    2019独角兽企业重金招聘Python工程师标准>>> 本文转自:http://blog.charlee.li/memcached-001/ memcached是什么? memcac ...

  8. php memcached 扩展下载,编译安装 PHP 的 Memcached 扩展

    image.png 前面章节我会先简要说明一下安装过程, 后面章节我会记录在安装期间踩过的坑. Linux 下编译软件的步骤参见Linux 编译软件的步骤 服务器环境 CentOS 7 PHP 7.0 ...

  9. memcached java 客户端优化,分布式缓存技术memcached学习系列(五)—— memcached java客户端的使用...

    Memcached的客户端简介 我们已经知道,memcached是一套分布式的缓存系统,memcached的服务端只是缓存数据的地方,并不能实现分布式,而memcached的客户端才是实现分布式的地方 ...

最新文章

  1. 虚拟机系统的磁盘扩容妙招及案例
  2. Foursquare开源Rogue和Full-Loaded两款开发工具
  3. mysql timestampt 输入字符串的格式不正确._mysql中取出的时间格式不正确
  4. C++实现有向图最短路径-Dijkstra单源最短路径算法
  5. 合成小丹(dp+二进制按位或+结论)
  6. 前台传String日期格式后台用Date类型接收
  7. 用鼠标在窗口中画方形的程序------基于OpenCV+VS
  8. 如何删除选择框的所有选项,然后添加一个选项并使用jQuery选择它?
  9. mysql 小数转换成百分数查出(保留两位小数百分数)
  10. 树组件:主要配置项、属性、方法
  11. [转]Java集合类: Set、List、Map、Queue使用场景梳理
  12. 如何用PADS打开AD的PCB文件?
  13. 计算机考试电子档照片,电子版照片是啥意思???
  14. [轻音乐] - 理查德·克莱德曼专辑[8CD]
  15. 学术英语理工(第二版)Unit3课文翻译
  16. 解决macOS无法在线升级更新的问题
  17. 题解 SP2916 【GSS5 - Can you answer these queries V】
  18. RK3328安装liunx(ubuntu16.04)RK固件
  19. 屏幕录制软件推荐,分享这3款,简单好用
  20. 企业非法集资风险预测

热门文章

  1. 远程服务器套娃,无限套娃!RemoteView云上浏览器:运行在浏览器里的远程浏览器...
  2. 使用sh执行bash脚本的奇怪问题
  3. UE4 物理系统实现
  4. addons软件下载_addons手机正版下载|
  5. 简易封装 element form表单
  6. 带你走近微软最“动听”的程序媛 | 女神节特辑
  7. eclipse中的buidpath配置(工程不build)
  8. 网站SEO优化做好能抵几个销售?看看杭州石炭纪怎么用网站来干了销售的活!
  9. python计算ks
  10. 初始化磁盘选哪个格式 初始化磁盘分区形式选什么好