memcached简记

发表于 2023-05-10  506 次阅读


作者:Scanz

更新版本:V1(20170114初版,待更新格式)

----------------------------------------------

传统Web架构的问题

       许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示

       随着数据量的增大、访问的集中,就会出现RDBMS的负担加重,数据库响应恶化,网站显示延迟

等重大影响

数据存储位置对比

       性能

              CPU缓存>内存>磁盘>数据库

       价格

              CPU缓存>内存>磁盘>数据库

memcached概述

       memcached是高性能的分布式缓存服务器

       用来集中缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的响应速度

首次访问:从RDBMS中取得数据保存到memcached

第二次后:从memcached中取得数据显示页面

memcached 支持许多平台

       Linux

       FreeBSD

       Solaris(memcached 1.2.5以上版本)

       Mac OS X

       Windows

memcached 的特征

       协议简单

       基于libevent的事件处理

       内置内存存储方式

内存管理机制

       传统内存分配机制

              使用完通过分配的内存后回收内存,这种方式容易产生内存碎片并降低操作系统对内存的管理效率

       Slab Allocation

              它按照预先规定的大小,将分配的内存分割成特定长度的内存块(chunk),再把尺子相同的内存块分成组(chunk集合),这些内存块不会释放,可以重复利用

       Slab Allocation的主要术语

              分配给Slab的内存空间默认是1MB,分配之后根据Slab定义的大小切分成chunk

       Chunks是用于缓存记录的内存空间

       Slab Class是特定大小的chunk组

将 100字节的数据缓存到128字节的chunk中,剩余的28字节就浪费了;-f指定增长因子来控制chunk的大小

              memcacged 使用名为Least Recently Used (LRU)机制来分配空间

                     删除 “最近最少使用”的记录的机制

              当memcacged 的内存空间不足时,从最近未被使用的记录中搜索,并将其空间分配给新的记录

              -M参数禁止LRU功能,内存用尽时memcached会返回错误,不建议使用memcached -M -m 1024

安装事件库libevent

       tar -xf libevent-2.0.22-stable.tar.gz

       cd libevent-2.0.22-stable

       sh configure

       make && make install

       echo "/usr/local/lib" > /etc/ld/so.conf.d/libevent.conf

       ldconfig

       ldconfig -v | grep --color libevent

安装memcached

       tar -xf memcached-1.4.23.tar.tar

       cd memcached-1.4.23

       sh configure

       make && make install

       /usr/local/bin/memcacged -h

启动memcached

       bin/memcached -p 11211 -l IP -u root -m 100 -c 200 -vvv -n 10 -f 2 -d

       选项

              -p     指定memcached监听的端口号,默认11211

              -l     memcached服务器的ip地址

              -u     memcached程序运行时使用的用户身份必须是root用户

              -m     指定使用本机的多少物理内存数据,默认64M

              -c     memcached服务的最大连接数

              -vvv   显示详细信息

              -n     chunk szie 的最小空间是多少,单位为字节

              -f     chunk szie 大小增长的倍增,默认1.25倍

              -d     在后台启动

测试memcacged

       telnet localhsot 11211

       stats

memcached常用指令

       add name 0 180 10 //变量不存在则添加

       set name 0 180 10 //添加或替换变量

       replace name 0 180 10 //替换

       get name      //读取变量

       append name 0 180 10 //向变量中追加数据

       delete name //删除变量

       stats         //查看状态

       flush_all     //清空所有

构建memcached服务

       任务要求:

              使用源码安装memcached软件

              使用telnet测试memcached

              对memceched进行增、删、改、查等操作

PHP+memcached介绍

       部署LNMP

              使用php页面,测试对memcached的读写操作

              具体操作参考第三章节Nginx+FastCGI

       PHP无法直接操作memcached

              需要安装memcached扩展

       安装PHP的memcache扩展

              tar -xf memcache-2.2.5.tgz -C ./

              cd memcache-2.2.5

              /usr/local/php5/bin/phpize

                     .....

                     .....

              ./configure --with-php-config=/usr/local/php5/bin/php-config \

                           --enable-memcache

              make && make install

              /usr/local/php5/lib/php/extensions/no-debug-non-zts-20100525 //提示模块存放目录memcache.so

              vim /usr/local/php5/etc/php.ini

                     extension_dir="/usr/local/php5/lib/php/extensions/no-debug-non-zts-20100525/"                     //加载模块

                     extension=memcache.so      //加载模块

              /etc/init.d/php-fpm reload

       编写PHP页面

              cat /usr/local/nginx/html/test.php

                     <?php

                     $memcache=new Memcache;

                     $memcache->connect('localhost',11211)or die ('could not connect!!')

                     $memcache->set('key','test');

                     $get_values=$memcache->get('key');

                     echo $get_values;

                     ?>

LNMP+memcached

       1.使用源码安装部署LNMP环境

       2.LNMP通过FastCGI支持PHP动态网站

       3.为PHP安装memcache扩展

       4.通过PHP页面实现对memcached的增、删、改、查等操作

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

0

scanz个人博客