06.14 memcached缓存服务
来源:互联网 发布:python自然语言处理库 编辑:程序博客网 时间:2024/05/17 08:06
第一章 集群后端的共享会话
方法1.ip_hash
nginx的调度算法ip_hash 缺点:导致负载不均
方法2.memcached
memcached做共享会话session
方法3.cookies
cookies 优点可以大并发,缺点:容易篡改。
第二章 memcached服务安装
1. libevent(epoll模型,libevent作为事件通知机制)
yum install libevent-devel -y
2. 安装memcached服务
yum install memcached -y
3. 启动服务并检查
[root@CentOS7-111 ~]# memcached -m 16m -c 2048 -u root -p 11211 -d[root@CentOS7-111 ~]# ss -lntup|egrep 11211udp UNCONN 0 0 *:11211 *:* users:(("memcached",pid=3946,fd=28))udp UNCONN 0 0 :::11211 :::* users:(("memcached",pid=3946,fd=29))tcp LISTEN 0 128 *:11211 *:* users:(("memcached",pid=3946,fd=26))tcp LISTEN 0 128 :::11211 :::* users:(("memcached",pid=3946,fd=27))
第三章 存取数据测试
1. telnet交互模式
[root@mysql01_51 ~]# telnet 127.0.0.1 11211Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.set k1 0 0 6 oldboySTOREDget k1VALUE k1 0 6oldboyENDdelete k1 DELETEDget k1END
2. nc非交互模式
printf "set key008 0 0 6\r\noldboy\r\n"|nc 127.0.0.1 11211printf "get key008\r\n"|nc 127.0.0.1 11211printf "delete key008\r\n"|nc 127.0.0.1 11211
第四章 安装客户端在php服务器
php安装详情见http://blog.csdn.net/qunchao_blog/article/details/75220030
1. 编译安装memcache
axel http://pecl.php.net/get/memcache-2.2.7.tgztar zxf memcache-2.2.7.tgzcd memcache-2.2.7/application/php/bin/phpize./configure --enable-memcache --with-php-config=/application/php/bin/php-configmakemake install
2. 查看extension是否有.so文件
[root@web02-8 tools]# ll /application/php/lib/php/extensions/no-debug-non-zts-20121212/total 284-rwxr-xr-x 1 root root 289296 Jul 21 20:43 memcache.so
3. 编写php站点目录
mkdir -p /application/nginx/conf/blog/cd /application/nginx/conf/blog/[root@web02-8 blog]# vim a.php<?phpphpinfo();?>
4. 修改php.ini配置文件
sed -i '/extension_dir/s#./#/application/php/lib/php/extensions/no-debug-non-zts-20121212/#g' /application/php/lib/php.inised -i '717iextension = memcache.so' /application/php/lib/php.inipkill php-fpm/application/php/sbin/php-fpm
5. 网页查看是否有memcache
http://blog.etiantian.org/a.php
6. 连接到memcached服务端
1. 测试连接到memcached服务端
cd /application/nginx/html/blog vim aaa.php<?php $memcache = new Memcache; $memcache->connect('10.0.0.51', 11211) or die ("Could not connect Mc server"); $memcache->set('key', 'oldboy book'); $get= $memcache->get('key'); echo $get;?>chown www.www aaa.phphttp://blog.etiantian.org/aaa.php
2. 安装memadmin
cd /home/oldboy/tools/axel http://www.junopen.com/memadmin/memadmin-1.0.12.tar.gztar xfC memadmin-1.0.12.tar.gz /application//nginx/html/blog/http://blog.etiantian.org/memadmin/index.php
第五章 内存管理机制
1. memcached采用了如下机制:
采用slab内存分配机制。
采用LRU对象清除机制。
采用Hash机制快速检索item。
2. memcached的内存管理机制
【1】memcached的早期内存管理机制为malloc(动态内存分配)。
【2】malloc(动态内存分配)产生内存碎片,导致操作系统性能急剧下降。
【3】slab内存分配机制可以解决内存碎片的问题。
【4】memcached服务的内存预先分隔成特定长度的内存块,成为Chunk,用于缓存数据的内存空间或内存块,相当于磁盘的block,只不过磁盘的每一个block都是相等的,而chunk只有在同一个Slab Class,只不过磁盘的每一个block都是相等的,而chunk只有在同一个Slab Class内才是相等的。
【5】Slab Class指特定大小(1MB)的包含多个chunk的集合或组,一个Memcached包含多个Slab Class,每个Slab Class包含多个相同大小的chunk。
【6】Slab机制也有缺点,例如,chunk的空间会浪费等。
3. 内存结构小结:
总结:memcached采用slab内存管理机制,是由多个slab模块组成,每个slab模块默认大小为1M,模块下面又分为多个slab class模块,slab class模块又分为多个chunk组成,每个chunk大小不一样,当用户存入数据的时候会匹配合适的chunk存入数据,以免减少空间浪费。
4. memcached检测对象过期机制
首先要知道,Memcached不会主动监测item对象是否过期,而是在进行get操作时检查item对象是否过期以及是否应该删除! 因为不会主动监测item对象是否过期,自然也就不会释放已分配对象的内存空间了,除非为添加的数据设定过期时间或内存缓存满了,在数据过期后,客户端不能通过key取出它的值,其存储空间将被重新利用。
Memcached使用的这种策略为懒惰检测对象过期策略,即自己不监控存入的key/value对是否过期,而是在获取key值时查看记录的时间戳,从而检查key/value对空间是否过期,这种策略不会再过期检测上浪费CPU资源。
5. memcached懒惰删除对象机制
当删除item对象时,一般不会释放内存空间,而是做删除标记,将指针放入slot回收插槽,下次分配的时候直接使用。
Memcached在分配空间时,会有限使用已经过期的key/value对空间,若分配的内存空间占满,Memcached就会使用LRU算法来分配空间,删除最近最少使用的key/value对,从而将其空间分配给新的key/value对,在某些情况下(完整缓存),如果不想使用LRU算法,那么可以通过-M参数来启动Memcached,这样,Memcached在内存耗尽时,会返回一个报错信息。
6. 删除机制小结
不主动检测item对象是否过期,而是在get时才会检查item对象是否过期以及是否应该删除。
当删除item对象时,一般不释放内存空间,而是做删除标记,将指针放入slot回收插槽,下次分配的时候直接使用。
当内存空间满的时候,将会根据LRU算法把最近最少使用的item对象删除。
数据存入可以设定过期时间,但是数据过期后不会被立即删除,而是在get时检查item对象是否过期以及是否应该删除。
如果不希望系统使用LRU算法清楚数据,可以使用-M参数。
- 06.14 memcached缓存服务
- Memcached缓存
- Memcached缓存
- Memcached缓存
- 缓存memcached
- Memcached 缓存
- Memcached缓存
- memcached缓存
- memcached缓存
- Memcached缓存
- Memcached缓存
- MemCached缓存
- Memcached缓存
- Memcached-----memcached实现内存缓存
- Memcached-----memcached实现内存缓存
- Memcached-----memcached实现内存缓存
- 缓存Memcached以及缓存策略
- memcached缓存,“分布式” 缓存服务器.
- 使用TagFlowLayout制作动态添加删除标签
- 微信端唤起腾讯地图并进行导航
- docker基础(一)
- 【CMake】已有项目添加JNI支持
- Storm Topologies 示例——(结合Maven使用storm-starter)
- 06.14 memcached缓存服务
- bzoj3781 小B的询问(莫队)
- Winsock编程流程
- appium +夜神模拟器 java代码sendkeys 无法在模拟器输入中文
- Json学习笔记(三)-前端json字符串互转(4种转换方式)
- Spark的一些操作
- 将txt文本中的图片路径的图片读到某文件夹下
- oracle删除DBF文件
- 重启ORACLE数据库