分享

写回答

发帖

[介绍] memcache的简单介绍和使用

GoDaddy GoDaddy 4219 人阅读 | 1 人回复

发表于 2017-5-23 11:38:05 | 显示全部楼层 |阅读模式

memcache简介

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端口的程序在运行

[php] view plain copy
# netstat -an  

2. Linux下安装

2.1 环境准备

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

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

[plain] view plain copy
# 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)

[php] view plain copy
# ./configure--prefix=/usr/local/libevent && make && make install  
--prefix 指定安装路径

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

[php] view plain copy
# ./configure --prefix=/usr/local/memcached--with-libevent=/usr/local/libevent && make && make install  
--with-libevent 告诉memca  libevent 的安装位置

2.3 memcached的启动

[php] view plain copy
# /usr/local/memcached/bin/memcached -m 64-p 11211 -u nobody -vv  

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

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

[php] view plain copy
# /usr/local/memcached/bin/memcached -m 64 -p 11211-u nobody -d  

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


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

1. Windows和 Linux下一样

使用Telnet操作

进入

[php] view plain copy
#telent localhost 11211  
退出
输入quit命令,注意需要是另起一行(按一下回车)或者按Ctrl + ](随时使用)之后按Ctrl+c

2. 基本命令:

学习memcache的增删改查命令:

add key flag expire length

key: 名称

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

expire:过期时间,memcache时间

length:数据长度(B)

※add 增加

[php] view plain copy
# 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 删除

[php] view plain copy
#delete key  

※replace 替换

[php] view plain copy
#replace key flag expire length  

※get 获取

[php] view plain copy
# getkey  

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

[php] view plain copy
# setkey flag expire length  

※incr 增加

[php] view plain copy
# incrage NUMBER  




※decr 减少

[php] view plain copy
# decrage NUMBER  




※stats 统计memcache服务器信息

[php] view plain copy
#stats  

※flush_all 清空所有数据

[php] view plain copy
#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文件(必须在扩展目录内)

[php] view plain copy
# /usr/local/php/bin/phpize (绝对路径phpize)  


*找不到的可以使用find / -name phpize 进行查找
d. 利用上面生成的configure文件,收集系统信息

[php] view plain copy
# ./configure--with-php-config=/usr/local/php/bin/php-config   
--with-php-config 告诉它php配置文件位置
e. 执行编译、安装

[php] view plain copy
# make && make install  
注意:可以查看上述命令执行完成之后的结构

[php] view plain copy
# ls/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/  


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

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

[php] view plain copy
extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/  
[php] view plain copy
extension=memcacahe.so  

e. 测试

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




php操作memcache,保存并获取值


回答|共 1 个

dh900923

发表于 2017-5-24 08:41:10 | 显示全部楼层

顶,谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则