memcache的简单介绍和使用

时间:2021-08-31 12:03:50

memcache简介

memcache官网:http://memcached.org/

1. 简单介绍

memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著  。这是一套开放源代码软件,以BSD license授权发布。【摘取自百度百科】

 

分布式(集群):

缓存系统:严格意义上来说,memcache不是一个nosql的数据库,只是一个提供内存缓存功能的系统。那怎么理解别人说的memcache又是一个nosql数据库?首选说明一下什么是nosql(泛指非关系型数据库),关系型数据是基于二维表(实体和实体之间的关系就叫做关系型数据库),而非关系型数据库不使用SQL语句作为查询,使用key-value这种数据结构保存数据的数据库,而memcache本身是没有使用SQL语句作为查询的,所以他是nosql库。

 

2. 使用原理

在使用的时候,先从nosql数据库里面获取,有的话直接返回,没有的话就先从MySQL获取,然后缓存到memcache里面,下次直接从memcache里面返回

 

3. memcache与MySQL的区别

a. 没有使用SQL语句

b. memcache没有MySQL中的表的概念,都是使用key-value来保存的

c. memcache的数据是保存到内存中的,断电即丢失

 

注意:nosql的存在永远不是为了取代MySQL(关系型数据),是关系型数据的一个补充。因为关系型数据库有它独特的地方(事务,存储过程)。

 

memcache安装(使用端口11211)

1. Windows下安装

1.1 直接将memcached文件放置到某一文件夹下

1.2 在cmd下执行如下命令(把memcache直接拖到窗口加上 -p 11211 回车 不能关闭窗口)可以使用Ctrl+c 终止

1.3 查看是否启动(新开一个cmd窗口),执行如下命令查看是否有一个11211端口的程序在运行

# netstat -an

2. Linux下安装

2.1 环境准备

在Linux环境下,需要gcc、g-c++、make(makefile)、cmake、autoconfig(configure)、libtool等工具

在Linux下联网的情况下,使用如下命令

# yum install -y gcc make cmakeautoconfig libtool

-y 不需要使用确认交互式,即没有安装确认等麻烦提示

2.2 编译安装memcached

memcached依赖于 libevent库,因此需要先安装,分别到各自的官网下载稳定版

libevetnt官网:http://libevent.org/

memcache官网:http://memcached.org/

 

先编译安装libevent,在编译安装memcached,同时在安装memcached需要指定libevent的安装路径

具体步骤:

上传

a. 先下载libevent,解压,并安装(一般Linux下软件安装都是放在/usr/local/src目录下,安装的软件一般放在/usr/local/NAME)

# ./configure--prefix=/usr/local/libevent && make && make install

--prefix 指定安装路径

b. 安装memcache,解压、编译、安装

 # ./configure --prefix=/usr/local/memcached--with-libevent=/usr/local/libevent && make && make install

--with-libevent 告诉memca  libevent 的安装位置

2.3 memcached的启动

# /usr/local/memcached/bin/memcached -m 64-p 11211 -u nobody -vv

注意:此时memcached成功启动,但把信息输出到控制台。

如果想让memcached作为服务在后台启动,只需要加上-d选项

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

如果需要查看参数信息,使用 memcached -h 查看帮助:


操作memcache

memcached的客户端与服务器端的通信很简单,基于文本的协议,类似http协议,可以直接使用Telnet来做交互

 1. Windows和 Linux下一样

使用Telnet操作

进入

#telent localhost 11211
退出

输入quit命令,注意需要是另起一行(按一下回车)或者按Ctrl + ](随时使用)之后按Ctrl+c

2. 基本命令:

学习memcache的增删改查命令:

add key flag expire length

key: 名称

flag: 标记是一个16位的无符号整形数据,用来设置服务器端跟客户端一些交互的操作

expire:过期时间,memcache时间

length:数据长度(B)

※add 增加

# add name1 0 4

key 给值起一个名字叫“name”

flag 标志为一个正整数 

expire 有效期 0 不过期

length 缓存的长度(B为单位)4

 

注意:

如何理解flag

memcached基于本文协议,所有的数据都是被当做字符串来存储的。那如何存储php中的对象和数组?

答:将数组序列化成字符串,取出的时候,然后反序列化成 数组/对象等

这个时候,就可以通过flag来标记如何发序列化。

比如:1 就是字符串 2 反序列化成数组 3 发序列化成对象

 

如何理解expire

设置缓存的有效期,有三种格式

1. 设置秒数,从设置开始,n秒后失效

2. 时间戳,到指定时间戳后失效

3. 设置为0,不自动失效(特别注意,不是永久有效。a. 在memcache安装时候,指定了一个最长的有效时间,默认是30天 b. 可能不到30天,就会被挤出去)

 

※delete 删除

#delete key

※replace 替换

#replace key flag expire length

※get 获取

# getkey


※set 如果数据有 replace 没有则 add

# setkey flag expire length


※incr 增加

# incrage NUMBER
memcache的简单介绍和使用

 

※decr 减少

# decrage NUMBER

memcache的简单介绍和使用

 

※stats 统计memcache服务器信息

#stats


※flush_all 清空所有数据

#flush_all

使用php操作memcache

1. Windows下

a. 到(http://downloads.php.net/pierre/)下载扩展dll文件

b. 将该文件放到php的extension_dir对应的目录下

c. 修改php.ini文件,加入 extension=php_memcache.dll,引入该文件

d. 重启Apache

 

2. Linux下

a. 到(http://pecl.php.net/package/memcache)去下载扩展源码

b. 一般下载到 /usr/local/src 目录下,解压,并进入该文件夹内

c. 使用当前php的phpize命令创建configure文件(必须在扩展目录内

# /usr/local/php/bin/phpize (绝对路径phpize)


*找不到的可以使用find / -name phpize 进行查找

d. 利用上面生成的configure文件,收集系统信息

# ./configure--with-php-config=/usr/local/php/bin/php-config 
--with-php-config 告诉它php配置文件位置

e. 执行编译、安装

# make && make install

注意:可以查看上述命令执行完成之后的结构

# ls/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

memcache的简单介绍和使用

d. 修改php.ini配置文件,重启Apache

将上面生成的地址增加到php.ini配置文件,如下

extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
extension=memcacahe.so

e. 测试

建立一个test.php文件,测试php是否有memcache的一个模块

memcache的简单介绍和使用

memcache的简单介绍和使用

php操作memcache,保存并获取值


memcache的简单介绍和使用