一、Memcached介绍

1、Memcached是国外社区网站LiveJournal团队开发,通过缓存数据库查询结果,减少数据库访问次数,从而提高动态web站点性能。

2、官方站点http://memcached.org

3、基于c/s架构,协议简单

4、基于libevent的事件处理

5、自主内存存储管理(slab allowcation)

6、数据过期方式:Lazy Expiration和LRU

7、程序员在开发时,自行调用Memcached的API,Memcached的功能才能生效

Memcached:指的是服务器Server

memcached:指的是php连接memcached服务可以使用的扩展,

memcache:php连接Memcached服务可以使用的另一个扩展,没有memcached强大

libmemcached:C库

二、Slab allocation

1、Slab Allocation的原理--将分配的内存分割成各种尺寸的块(chunk),并把尺寸相同的块分成组(chunk的集合),每个chunk集合被称为slab;

2、Memcached的内存分配以Page为单位,Page默认值为1M,可以在启动时通过-l参数来指定;

3、Slab是由多个Page组成的,Page按照大小切割成多个chunk。

4、slab class:特定大小的chunk组

三、Growth factor

1、memcached在启动时通过-f选项可以指定Growth Factor因子。改值控制chunk大小的差异。默认值为1.25;

2、通过memcached-tool查看指定memcached实例的不同slab状态,可以看到个Item所占大小(chunk大小)差距为1.25

3、命令:# memcached-tool 127.0.0.1:11211 display

四、Memcached数据过期方式

1、Layy Expiration

memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。这种技术被称为lazy(惰性)expiration。因此,memcached不会再过期监视上耗费CPU时间。

2、LRU(Least Recently Used)

memecached会优先使用已超时的记录的空间,但即使如此,也会发生追加新纪录时空间不足的情况,此时就要使用名为Least Recently Used(LRU)机制来分配空间。顾名思义,这是删除“最近最少使用”的记录的机制。因此,当内存空间不足时(无法从slab class获取到新的空间时),就从最近未使用的记录中搜索,并将七空间分配给新的记录。从缓存的使用角度来看,该模型十分理想。

五、Memcached安装

1、安装epel扩展源

# yum -y install epel-release

2、memcached是基于libevent的,libmemcached是memcached的工具

# yum -y install libevent memcached libmemcached

3、启动memcached

# /etc/init.d/memcached start

4、memcache启动时的参数要在/etc/sysconfig/memcached文件中配置

# vim /etc/sysconfig/memcached

5、Memcached启动时参数

-d:选项是启动一个守护进程

-m:是分配给Memcached使用的内存数量,单位是MB

-M:内存耗尽时返回错误而并非删除条目

-u:是运行Memcached的用户,如果当前为root的话,需要使用此参数指定用户

-l:是监听的服务器的IP地址

-p:是设置Memcached监听的端口,默认是11211

-c:选项是最大运行的并发连接数,默认是1024

-n:chun的初始大小,key+value+flags,默认为48

-P:是设置保存Memcached的pid文件

六、查看memcached运行状态

1、# memcached-tool 127.0.0.1 stats

2、# echo stats | nc 127.0.0.1 11211需要安装nc的rpm包

# yum -y install nc

3、# memstat --servers=127.0.0.1:11211需要安装libmemcached

的rpm包

七、Memcached命令行

通过telnet连接Memcached

# telnet 127.0.0.1 11211

存取数据

set key1 0 300 2

12

STORED

get key1

VALUE key1 0 2

12

END

八、Memcached语法规则

<command name><key><flags><exptime><bytes>\r\n<data block>\r\n

注:\r\n在windows下是Enter键

1、<command name>可以是“set”,“add”,“replace”。

“set”表示按照相应的<key>存储该数据,没有则增加,有则覆盖

“add”表示按照相应的<key>添加该数据,但是如果该<key>已经存在则会操作失败

“replace”表示按照相应的<key>替换数据,但是如果该<key>不存在则会操作失败

2、<key>客户端需要保存数据的key

3、<flags>是一个16位的无符号的证书(以十进制的方式表示)。该标志将和需要存储的数据一起存储,并在客户端get数据时返回。客户可以将此标志用作特殊用途,此标志对服务器来说是不透明的。

4、<exptime>过期时间

若为0表示存储的数据永远不过期(但可被服务器算法:LRU等替换)。如果非0(unix时间或者距离此时的秒数),当过期后,服务器可以保证用户得不到该数据(以服务器时间为准)

5、<bytes>需要存储的内容,输入完成后,最后客户端需要加上“\r\n”(直接点击Enter)作为“命令头”的结束标志

九、PHP连接Memcached

先安装php的memcache扩展

# tar zxvf memcache-2.2.3.tgz

# cd memcache-2.2.3

phpize属于php-devel包,源码包安装的选择源码包安装的位置,一般情况位于:

/usr/local/php/bin/phpize

# /usr/bin/phpize

生成configure文件

# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache

# make &&  make install

# vim /etc/php.ini

extension = memcache.so

extension_dir = "/usr/lib64/php/modules/"

添加完成后用php -m查看一下是否有memcache模块

下载个php测试一小下

# curl www.apelearn.com/study_v2/.memcache.txt > 1.php 2>/dev/null

# php 1.php如果出现下面信息说明配置正确:

Get key1 value: This is first value<br>Get key1 value: This is replace value<br>Get key2 value: Array

(

[0] => aaa

[1] => bbb

[2] => ccc

[3] => ddd

)

十、Memcached实现session共享

在lamp/lnmp环境下实现的通用配置

编辑php.ini添加下面两行

session.save_handler = "memcache"

session.save_path = "tcp://127.0.0.1:11211"

或者编辑httpd.conf中对应的虚拟主机添加:

php_value session.save_handler "memcache"

php_value session.save_path "tcp://127.0.0.1:11211"

或者php-fpm.conf对应的pool中添加

php_value[session.save_handler] = memcache

php_value[session.save_path] = "tcp://127.0.0.1:11211"

IP地址是Memcached server的ip地址

在nginx发布的目录下创建session.php,加入如下内容:

<?php

session_start();

if (!isset($_SESSION['TEST'])) {

$_SESSION['TEST'] = time();

}

$_SESSION['TEST3'] = time();

print $_SESSION['TEST'];

print "<br><br>";

print $_SESSION['TEST3'];

print "<br><br>";

print session_id();

?>

# curl -x127.0.0.1:80 localhost/session.php

# telnet 127.0.0.1 11211

get lundelrir281bbgi4p4d261tq5

就可以看到Memcached中已经保存了session的信息了

通过# curl -x127.0.0.1:80 localhost/phpinfo.php | grep session.save_path可以查看到memcache的配置信息

也可以通过phpinfo.php在页面中的session项中看到memcache的配置信息

转载于:https://www.cnblogs.com/fansik/p/5473652.html

Memcached安装及配置相关推荐

  1. linux 下的Memcached安装和配置

    转载:http://hi.baidu.com/helios_sun/item/b902b90ed39054c12e4c6baf ************************* 主要是要安装php的 ...

  2. Memcached安装与配置

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  3. centos下nginx+postgresql+php+memcached+apc安装与配置

    2019独角兽企业重金招聘Python工程师标准>>> 具体安装步骤如下: 具体安装软件包: nginx1.0.13wget http://nginx.org/download/ng ...

  4. Windows下Memcached的安装与配置

    Windows下Memcached的安装与配置 安装: 1.下载memcached, http://www.danga.com/memcached/ ; 2.解压,比如放在 D:\memcached- ...

  5. Memcached 1.4.22安装和配置

    准备 1. 下载安装文件: 1 2 3 cd /tmp     wget http://downloads.sourceforge.net/levent/libevent-2.0.22-stable. ...

  6. Memcached的安装及配置

     一.安装Memcached及Memcached配置和状态查询           要想使用Memcached做缓存首先需要安装Memcached服务,安装方法如下:       1. 下载Mem ...

  7. Memcached安装以及PHP的调用

    一:安装libevent 由于memcached安装时,需要使用libevent类库,所以先安装libevent 1.下载 #wget   http://www.monkey.org/~provos/ ...

  8. linux下memcached安装 和redis安装,jdk,tomcat,mysql 安装

    一.memcached安装yum search memcached yum -y install memcached memmcached -h service memcached restart c ...

  9. (九)OpenStack---M版---双节点搭建---Swift安装和配置(单存储节点)

    ↓↓↓↓↓↓↓↓视频已上线B站↓↓↓↓↓↓↓↓ >>>>>>传送门 本次搭建仅采用Compute单节点做swift组件 1.Controller安装并配置控制节点 ...

最新文章

  1. mysql整理碎片和显示语句错误
  2. Linux统计行数命令wc(转)
  3. linux安装和配置 mysql、redis 过程中遇到的问题记录(转)
  4. yum 安装php7和相关扩展
  5. Qt / 查找可执行程序的依赖库
  6. 18个常用的JavaScript片段分享
  7. 项目开发总结报告(GB8567——88)
  8. HTTP header中的 Cache-control
  9. 关于多线程的一点补充
  10. 和媳妇加一起月薪三万五想换车了不知道x5养的起吗?
  11. C# CookieHelper帮助类
  12. 想要升级Big Sur?你的Mac与Big Sur兼容吗?
  13. Python 最新版破解滑块验证码自动登录QQ空间
  14. 计算机网络的定义及答案,计算机网络习题库
  15. HTML+CSS登陆界面实例
  16. 游戏设计学习笔记 —— 梦的开始
  17. keil编译错误:Error:Flash DownLoad failed - “Cortex-M4“
  18. 海康服务器装ISO系统,iso镜像,手把手教你iso系统镜像文件怎么安装
  19. CSDN博客炫丽图标调整字体大小和颜色
  20. 程序员面试常见问题有哪些?如何回答才能拿到offer?

热门文章

  1. Promise机制(持续更新中)
  2. Babel下的ES6兼容性与规范
  3. 如何设置VSCode中文显示
  4. asp向不同的用户发送信息_.Net Core 和 .Net Framework的不同
  5. 请问用微信很少语音而且打字不喜欢打错别字的是什么样的人?能说明这样的人办事认真吗?
  6. 跟女朋友约会一般都干些什么?
  7. 你第一次去丈母娘家时发生了哪些趣事?
  8. 自动挡车行驶当中,一个不小心碰到一键启动按钮,会怎样?
  9. 杜工部蜀中离席 [唐] 李商隐
  10. 有钱人的学习能力,穷人该得好好模仿