分布式缓存系统 Memcached 快速入门

时间:2023-03-08 16:58:04

Memcached介绍

     Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。
  Memcached 顾名思义,意味着 “内存缓存”,所有缓存的内容都在服务器的内存中。内存中的这些缓存数据可以通过 API 的方式被存取。数据是以 key/value 的配对方式存在的,就像一个很大的 Hash 表。

Memcached安装/运行

Memcached 支持许多平台:Linux、FreeBSD、Solaris、Mac OS,也可以安装在Windows上。

Linux系统安装memcached,首先要先安装libevent库。

sudo apt-get install libevent ibevent-dev         自动下载安装(Ubuntu/Debian)

yum install libevent libevent-devel                    自动下载安装(Redhat/Fedora/Centos)

安装 Memcached

Ubuntu/Debian

sudo apt-get install memcached

Redhat/Fedora/Centos

yum install memcached

FreeBSD

portmaster databases/memcached

运行Memcached

Memcached命令的运行:

$ /usr/local/memcached/bin/memcached -h                           命令帮助

注意:如果使用自动安装 memcached 命令位于 /usr/local/bin/memcached

启动选项:

  • -d是启动一个守护进程;
  • -m是分配给Memcache使用的内存数量,单位是MB;
  • -u是运行Memcache的用户;
  • -l是监听的服务器IP地址,可以有多个地址;
  • -p是设置Memcache监听的端口,,最好是1024以上的端口;
  • -c是最大运行的并发连接数,默认是1024;
  • -P是设置保存Memcache的pid文件。

(1)作为前台程序运行:

从终端输入以下命令,启动memcached:

/usr/local/memcached/bin/memcached -p 11211 -m 64m -vv

slab class   1: chunk size     88 perslab 11915

slab class   2: chunk size    112 perslab  9362

slab class   3: chunk size    144 perslab  7281

中间省略

slab class  38: chunk size 391224 perslab     2

slab class  39: chunk size 489032 perslab     2

<23 server listening

<24 send buffer was 110592, now 268435456

<24 server listening (udp)

<24 server listening (udp)

<24 server listening (udp)

<24 server listening (udp)

这里显示了调试信息。这样就在前台启动了memcached,监听TCP端口11211,最大内存使用量为64M。调试信息的内容大部分是关于存储的信息。

(2)作为后台服务程序运行:

# /usr/local/memcached/bin/memcached -p 11211 -m 64m -d

或者

/usr/local/memcached/bin/memcached -d -m 64M -u root -l 192.168.0.200 -p 11211 -c 256 -P /tmp/memcached.pid

Memcached工作方式分析

分布式是 Memcached 的主要特性,所以你可以在多台服务器上来安装 Memcached 来组建一个更大的缓存服务器。这样一来,Memcached 可以帮助我们使数据库的压力降到最低, 从而我们可以构建出更快的、更具扩展性的 WEB 应用。

许多Web应用都将数据保存到 RDBMS中,应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。Memcached是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web等应用的速度、 提高可扩展性。下图展示了memcache与数据库端协同工作情况:

分布式缓存系统 Memcached 快速入门

其中的过程是这样的:
           1.检查用户请求的数据是缓存中是否有存在,如果有存在的话,只需要直接把请求的数据返回,无需查询数据库。

2.如果请求的数据在缓存中找不到,这时候再去查询数据库。返回请求数据的同时,把数据存储到缓存中一份。
           3.保持缓存的“新鲜性”,每当数据发生变化的时候(比如,数据有被修改,或被删除的情况下),要同步的更新缓存信息,确保用户不会在缓存取到旧的数据。

     Memcached作为高速运行的分布式缓存服务器,具有以下的特点:
  • 协议简单
  • 基于libevent的事件处理
  • 内置内存存储方式
  • memcached不互相通信的分布式

如何实现分布式可拓展性

Memcached的分布式不是在服务器端实现的,而是在客户端应用中实现的,即通过内置算法制定目标数据的节点,如下图所示:

分布式缓存系统 Memcached 快速入门

参考:

Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析

Linux Memcached 安装