【提供源码包】高性能存储对象缓存 之【Memcached】

目录简介:

1· Memcached 功能
2· Memcached 特征
3· Memcached 储存方式
4· 实战部署 与 Memcached 连接
5· 文章总结


Memcached 介绍



1)Memcached 是什么?

1· memcached是一套分布式的快取系统,与redis相似,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,以BSD license授权协议发布。


2·memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后


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


4·Memcached 的守护进程(daemon )是用C语言写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余(例如,复制其hashmap条目);当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。



2)Memcached 的特征:

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

  • > · 协议简单
  • > · 基于libevent的事件处理
  • > · 内置内存存储方式
  • > · memcached不互相通信的分布式


3)Memcached 存储方式 :

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



4)请求拓扑图:



5)Memcached 分布式:

(1)Memcached 分布式主要依赖 Memcached 的客户端来实现,多个Memcached 客户端服务器是独立的。分布式数据怎么杨来存储是由路由算法决定。


(2)当数据到达客户端程序库时,客户端的算法就依据路由算法来决定保存的 Memcached 服务器。读取数据时,客户端依据保存数据的路由算法选择和储存数据时相同的服务器来读取数据。



(3)下图是分布Memcached 分布式:


实战部署:

1)实战部署说明:

1·需要两台 CenOS 7.4 (也可以是其他版本),需要源码包:libevent-2.1.8、memcached-1.5.6。


2·客户端需要:安装 LAMP 架构和源码包:memcache-2.2.7


3· 源码包提供(包括LAMP所有的包):此文章所需的源码包,请点击下载,密码:dqth



2)案例环境:

本案例使用两台 CenOS 7.4 系统完成,一台是 Memcached 服务器,另一台是基于 LAMP 架构进行 Memcached 扩展的 Memcached API 客户端,可以根据生产环境需求进行架构调整。

操作系统 IP地址 所需源码包 角色
CenOS 7.4 192.168.106.129 LAMP、memcache-2.2.7.tgz Memcached API 客户端
CenOS 7.4 192.168.106.133 libevent-2.1.8-stable.tar.gz 、 memcached-1.5.6.tar.gz Memcached 服务端







3)安装 Memcached 服务器
(1)安装 Libevent ,它是一款跨平台的时间处理接口的封装,可以兼容多个操作系统的时间访问。Memcached 的安装依赖于 Libevent ,所以需要先安装它,源码包在文章前已经提供,需要的点击下载

[[email protected] ~]# tar xvf libevent-2.1.8-stable.tar.gz -C /opt/ ----(解压到 /opt 目录下,只是个人习惯!


[[email protected] ~]# cd /opt/libevent-2.1.8-stable/


[[email protected] libevent-2.1.8-stable]# ./configure --prefix=/usr/local/libevent ---(指定安装路径


[[email protected] libevent-2.1.8-stable]# make && make install ---(开始制作,编译



就这么简单,Libevent 安装完毕,下面需要开始 安装 Memcached。



(2)安装 Memcached
采用源码的方式进行 Memcached 的编译安装,安装时需要指定 Libevent 的安装路径

[[email protected] ~]# tar xvf memcached-1.5.6.tar.gz -C /opt/ ---(解压 软件包
[[email protected] ~]# cd /opt/memcached-1.5.6/


[[email protected] memcached-1.5.6]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent ---(这里安装需要注意的是,需要指定 Libevent 的安装路径,因为 Memcached 需要依赖它
[[email protected] memcached-1.5.6]# make && make install ---(开始制作编译



(3)Memcached 优化与启动

[[email protected] memcached-1.5.6]# ln -s /usr/local/memcached/bin/* /usr/local/bin/ ---(建立软连接,方便使用它的命令


[[email protected] memcached-1.5.6]# memcached -d -m 32m -p 11211 -u root ---(启动 memcached
参数说明:-d:守护进程、-m:指定缓存大小为32M 、-p:指定默认端口11211 、 -u:指定 登陆用户为 root


查看一下启动情况:
[[email protected] memcached-1.5.6]# netstat -antp | grep memcached


关闭防火墙、SE功能
[[email protected] memcached-1.5.6]# systemctl stop firewalld.service
[[email protected] memcached-1.5.6]# setenforce 0



(4)Memcached 连接

需要安装 telnet 软件
[[email protected] ~]# yum install telnet -y


开始连接 本地memcached 11211端口:
[[email protected] ~]# telnet 127.0.0.1 11211


Memcached 基本操作:

//第一个0:不设置序列号,第二个0:无过期时间,第3个值是,字符长度
add username 0 0 7  

//查看username这个值的有效长度
get username

//查看username 这个值的有效长度和更新因子
gets username

//更新username这个值,有这个值则更新,无则创建
set username 0 0 8

//更新username,但是这个username必须存在
replace username 0 0 6

//检查更新,更新因子必须和查询的因子一样才能更新
cas username 0 0 7 4

//在原有的值后面追加
append username 0 0 7

//在原有的值前面追加
prepend username 0 0 2

//删除username
delete username

//清除所有缓存数据
flush_all

//显示状态信息
stats

//退出
quit


到此 Memcached 服务端 安装完毕,下面就需要开始安装 Memcached API 客户端



4)安装 Memcached API 客户端

(1) 安装 LAMP 架构的教程请访问:LAMP 安装教程 ----(客户端必须要安装 LAMP 架构


LAMP 架构安装完毕后,测试 MySQL 数据库。
[[email protected] ~]# mysql -u root -p 123123
create database a
grant all on a.* to ‘auser‘@‘%‘ identified by ‘123123‘;
flush privileges;

编写代码,用网页测试数据库:
[[email protected] ~]# vim /usr/local/httpd/htdocs/index.php
<?php
$link=mysql_connect(‘192.168.106.129‘,‘auser‘,‘123123‘);
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
mysql_close();
?>



开始访问网页:http://192.168.106.129/index.php
显示:Success!! 则说明,LAMP 中MySQL搭建成功。如下图:



LAMP 到此也搭建完成,下面需要安装 Memcached 客户端软件



(2)开始安装 Memcached 客户端

[[email protected] ~]# yum install autoconf -y
[[email protected] ~]# tar xvf memcache-2.2.7.tgz -C /opt ---(解压软件包)
[[email protected] ~]# cd /opt/memcache-2.2.7



**这里需要注意的是:memcache-2.2.7.tgz 源码包中默认是没有 configure 配置脚本,需要使用 PHP 的 phpize 脚本生成配置脚本 ,否则没办法 ./configure**

[[email protected] memcache-2.2.7]# /usr/local/php5/bin/phpize


Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226

-----
![](http://i2.51cto.com/images/blog/201809/24/456fb2a1bc2b7f3487705c7ef15eb55c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

-----
> [[email protected] memcache-2.2.7]# ./configure --enable-memcache --with-php-config=/usr/local/php5/bin/php-config

-----
> [[email protected] memcache-2.2.7]# make && make install ----(开始编译)

-----

记录以下这段路径,在PHP主配置文件需要用到:
/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/


-----
(3)配置 PHP 添加 Memcached 组件
> 编辑PHP配置文件 php.ini ,添加 Memcached组件,如果没有配置文件,我们拷贝一份模板
> [[email protected] ~]# cd /opt/php-5.6.11/
> [[email protected] php-5.6.11]# cp php.ini-development /usr/local/php5/php.ini
> [[email protected] ~]# vim /usr/local/php5/php.ini

-----

编辑内容如下:
extension_dir="/usr/local/php5/lib/php/extensions/no-debug-zts-20131226" ---(这个路径就是,之前记录下的路)
extension=memcache.so


-----
(4)测试 Memcached API 功能
> 通过编写简单的PHP 测试代码调用 Memcache 程序接口,来测试是否与 Memcached 服务器协同工作,代码如下:
> [[email protected] ~]# vim /usr/local/httpd/htdocs/index.php

-----

<?php
$memcache = new Memcache();
$memcache->connect(‘192.168.106.133‘,11211);
$memcache->set(‘key‘,‘Memcache test Successfull!‘,0,60);
$result = $memcache->get(‘key‘);
unset($memcache);
echo $result;
?>



-----
> **此段代码的作用是在客户端连接 memcached 服务器,设置名为 “key”的键的值为Memcache test Successfull ,并读取显示。显示成功,则表示服务器与客户端协同工作正常,下图是用浏览器访问结果:**
![](http://i2.51cto.com/images/blog/201809/24/667385df002b614c62288b959a9284b3.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

-----
**高性能内存对象缓存 Memcached 搭建成功!!!**

-----
文章总结:
1· Memcached 是分布式内存对象缓存系统,因为所有数据都存储在内存中,从而用于网站加速。
2· Memcached 分布式实现不是在服务端实现而是在客户端实现的。
3· Memcached 支持任意存储类型的数据。

原文地址:http://blog.51cto.com/13746824/2280986

时间: 2024-10-09 20:25:29

【提供源码包】高性能存储对象缓存 之【Memcached】的相关文章

【实战】Amoeba 代理 MySQL 主从复制 + 读写分离 【提供源码包】

目录简介: 1· Amoeba 的介绍2· MySQL 主从复制原理3· MySQL 读写分离原理4· 实战案例5· 总结归纳 Amoeba 的介绍 1)Amoeba 是什么: 1·Amoeba 的中文名是:变形虫.它是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行.基于此可以实现负载均衡.读写分离.高可用性等需求. 2·Amoeba相当于一个SQL请求的路由器,目的是为负载均衡.读

AWStats 日志分析系统(含源码包)

前言 在上一篇文章中写了关于httpd的一些简介.配置.那么我们应该知道,HTTP服务器的访问量非常庞大,在它的访问日志文件access_log 中,记录了很多很多客户的访问信息,维护的管理人员会通过分析这些信息,可以及时的了解Web的访问情况,比如每天或特定时间段的访问IP数量.点击量大的页面.那么就是因为访问量太多,信息量太大,所以导致管理员不方便与管理,分析.AWStats日志分析系统就诞生,下面介绍一下AWStats分析系统 有兴趣的朋友可以看看上一篇的httpd简介与配置. AWSta

在LAMP架构中安装Memcached高性能内存对象缓存应用(内含所有源码包)

初识memcached: Memcached是一套开源的高性能分布式内存对象缓存系统,它将所有的数据都存储在内存中,因为在内存中会统一维护一张巨大的hash表,所以支持任意存储类型的数据.很多网站通过使用memcached提高网站的访问速度,尤其是对于大型的需要频繁访问数据的网站. Memcached是典型的C/S结构,因此需要安装memcached服务端和memcached API客户端.Memcached服务端是用C语言编写的,而memcached API客户端可以用任何语言来编写,如PHP

Apache网页优化:网页压缩,网页缓存(内含源码包与抓包工具)

网页压缩:在linux系统中利用Apache中的gzip模块.可以使用gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器,经过压缩过后可以加快网页加载的速度 网页缓存:网页缓存是将 一部分经常不会改变或变动很少的页面缓存,下次浏览器再次访问这些页面时,不需要再次下载这些页面,从而提高了用户的访问速度 Apache软件包:https://pan.baidu.com/s/1hxWYjihLKYMRZ_Ev99v4qQ   密码:7hl7 抓包工具与环境包:https:

源码包搭建LAMP环境

第一步 1.安装编译工具 gcc* 安装数据库编译工具  cmake   bison yum -y install gcc* cmake  bison 2.下载LAMP压缩包:lamp.zip ,使用脚本批量解压 tar.sh 3.关闭防火墙.Selinux 第二步 分别编译安装各个源码包(共有17个包) 1.可以直接安装的源码包 2.1. # 安装libxml2 先安装   yum -yinstall python-devel mkdir /usr/local/libxml2/ cd /lam

LNMP+memcached平台源码包的搭建和配置

实验目的: 搭建LNMP平台 L          N          M           PLinux   Nginx   MySQL   PHP(解释PHP语言的程序)实验环境: LNMP平台的搭建IP地址:192.168.1.254 主机名:localhost 安装软件:lnmp+memcached.zip(nginx-1.2.0.tar.gz,cmake-2.8.10.2.tar.gz, mysql-5.5.13.tar.gz) 安装编译工具:gcc gcc-c++ make 开发

高性能内存对象缓存Memcached

高性能内存对象缓存Memcached Memcached简介 Memcached时一台开源的高性能分布式内存对象缓存系统,他将所有的数据都存储在内存中,因为在内存中会同意维护一张巨大而Hash表,所以支持任意存储类型的数据 1.学会安装Memcacahed服务 1.1安装Libevent Libevent是一款跨平台的事件处理接口的封装,可以兼容多个操作系统的事件访问.Memcached的安装依赖于Libevent,因此需要先完成Libevent的安装. 挂载源代码包 [[email prote

一步一步搭建Svn+Apache环境(附源码包)

一步一步搭建Svn+Apache环境(附源码包) 看了很多网上的搭建方法,但是因为配置的svn和Apache的版本问题和网上写的教程的不完整等原因,阻碍了很多想要学习的朋友!!今天亲手搭建了一下Svn+Apache环境,并且详细记录了每一步搭建的细节,送给需要的朋友们! 软件版本: redhat6.4(64位) apr-1.5.1.tar.gz apr-util-1.5.3.tar.gz httpd-2.2.27.tar.gz sqlite-amalgamation-3.6.17.tar.gz

Linux软件包管理{rpm|yum|源码包}2015082901

CentOS软件包管理 Linux程序安装有三种方式: 1.  二进制包安装 a.RPM b.YUM 2.  源码包安装 (1)二进制包管理: RPM CentOS上的二进制包为rpm格式,并且rpm软件包管理程序也叫做rpm(RPM is Package Manager) RPM包管理方式的优点是:安装简单方便,因为软件已经编译完成打包完毕,安装只是个验证环境和解压的过程.此外通过RPM方式安装的软件,RPM工具都会记录软件的安装信息至数据库中(/var/lib/rpm),这样方便了软件日后的