memcached原理及介绍
memcached是一种缓存技术,在存储在内存中(高性能分布式内存缓存服务器).目的 : 提速.(传统的都是把数据保存在关系型数据库管理系统既RDBMS,客户端请求时会从RDBS中
读取数据并在浏览器中显示,这样当访问量过大时或集中时,导致RSBMS负担过重,数据库响应恶化,浏览器中显示延迟等严重问题,使用memcached减少数据库查询和访问次数以
提供访问速度,提供扩展性)memcached为key->value非关系型数据库,key为一般子串,值唯一.value除了php中的资源不能存,其它的数据都能存储(字符串,数值,数组,对象,布尔值
,null,二进制<图片,视频>)
提速方法 :
1.传统 : 模拟cached方法(存储到数据库时生成一份静态文件到磁盘中)
2.直接操作内存(内存表,memcached服务维持了一张内存表hashdata)
3.CPU寄存器(最高速的,但是代价成本高)
memcached特征 :
1.协议简单(文本行协议)
2.基于libevent事件处理(注 : libevent是一个程序库,封装了linux的epoll,BSD等操作系统的kqueue等事件处理功能.即使对服务器的连接数添加,也能发挥O(1)的性能.
memcached在linux,BSD等操作系统上能发挥其高性能.)
3.内置内存存储方式(存储在memcached内置的内存存储空间中,提高性能.问题 : memcached重启或操作系统重启数据会丢失,达到一定量后会启动算法自动删除不使用的缓存)
4.不互相通信的分布式(不互相通信共享信息)
memcached作用 :
1.高性能分布式缓存服务器(缓存数据库查询结果,减少数据库访问次数)
缓存读取/写入过程 : 首次访问 : 从RDBMS中取得数据保存到memcached;第二次后 : 从memcached中取得数据显示页面.
memcached适合做的东西 :
1.访问频繁的字典数据
2.大量的hot数据(热门数据缓存)
3.页面缓存(web站常用)
4.搜索的查询条件和结果(热门搜索的内存缓存起来)
5.临时处理数据(不需要入库,排重)
memcached工作原理 :
memcached的工作就是在专门的机器的内存里维护一张巨大的hash表,来存储经常被读写的一些数组与文件,从而极大的提高网站的运行效率.
采用的是C/S模式,在server端启动服务进程,在启动时可以指定监听的ip,自己的端口号,所使用的内存大小等几个关键参数.采用了单进程,单线程,异步I/O,基于事件(event_based)
的服务方式.使用libevent作为事件通知实现.每个Server只是对自己的数据进行管理.Client端通过指定Server端的ip地址(通过域名应该也可以).以key->value形式,key
的值通过hash进行转换,然后确定对那台server存储/获取数据.
memcached内存算法 :
使用的是slab allocation机制分配和管理内存,按照预先规定的大小,将分配的内存分割成特定长度的内存块,再把尺寸相同的内存块分成组,数据在存放时,根据键值大小去
匹配slab大小,找就近的slab存放,所以存在空间浪费现象.
memcached缓存策略 :
是LRU(最近最少使用)加上到期失效策略.当你在memcached内存储数据项时,你有可能会指定它在缓存的失效时间,默认为永久.当memcached服务器用完分配的内存时,失效的
数据被首先替换,然后也是最近使用的数据.在LRU中,memcached使用的是一种Lazy Expiration策略,自己不会监控存入的key/value对是否过期,而是在获取key值时查看记录
的时间戳,检查key/value对空间是否过期,这样可减轻服务器的负载.
memcached失效策略 :
Lazy expiration + LRU
Lazy expiration作用 : 假如我们所存储的数据项相对多的时候,在这时候进行监控的话,话费的代价是相当大的,所以memcached不会在过期监视上耗费风度哦的CPU时间,
从而在性能方法也起到一定的优化作用.
LRU : memcached会优先使用已超时的空间,但是还是会有追加信息时空间不足的状态,这时候会使用Least Recently Used(LRU)机制来分配空间,就从最近未被使用的记录
中搜索,并将其空间分配给新的记录.
memcached分布式算法 :
当向memcached集群存入/取出Key/value时,memcached客户端会根据一定算法计算存入那台服务器.(第一步 : 选择服务器,第二步 : 存取数据)
余数算法 : 先求得键的整数散列值,再除以服务器数量,根据余数觉得存储那台服务器.(特点 : 简单,高效.但是扩展性差,服务器数量变更时,几乎所有的缓存都会失效)
散列算法 : 先计算memcached的散列值,并将其发布在0-2^32的圆上,然后用同样的方法算出存储数据键的散列值并映射至圆上,最后从数据映射到的位置开始顺时针查找,
将数据保存在查找到的第一台服务器,如果超过2^32还是找不到,则将数据保存在第一台memcached服务器上.如果添加一台memcached服务器,则只在圆上添加的逆时针方向
的第一台服务器上的键会受到影响.
memcached与redis比较
memcached : 支持多核,内存利用率高,无持久性,数据结构简单.
redis : 单核,内存利用率低(采用压缩会比memcached高),有(硬盘存储,主从同步),数据结构复杂.
注释 :
散列值 : 将值从一个大的(可能很大)定义域映射到一个较小值域的(数学)函数.散列函数是把该函数应用到大的定义域中的若干值得(大)集合的结果可以均匀地(和随机地)
被分布在该范围上.
memcached原理及介绍的更多相关文章
- Timer与TimerTask的真正原理&使用介绍
转载: Timer与TimerTask的真正原理&使用介绍 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来 ...
- Memcached原理与应用
Memcached原理与应用 标签: linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 1.Memcached是什么 高性能 支持高并发 分布式内存缓存 ...
- LDAP服务器的概念和原理简单介绍
LDAP服务器的概念和原理简单介绍 1. 目录服务 目录是一个为查询.浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样.目录数据库和关系数据库不 ...
- (转)OpenStack —— 原理架构介绍(一、二)
原文:http://blog.51cto.com/wzlinux/1961337 http://blog.51cto.com/wzlinux/category18.html-------------O ...
- Unity3d 发动机原理详细介绍
Unity3d 发动机原理详细介绍 www.MyException.Cn 发布于:2013-10-08 16:32:36 浏览:46次 0 Unity3d 引擎原理详细介绍 体系结构 ...
- Docker系列之原理简单介绍
目录 1.1.Docker架构简介 1.2.Docker 两个主要部件 1.3.虚拟机和Docker对比: 1.4.Docker内部结构 Docker系列之原理简单介绍 @ Docker是一个开源的应 ...
- 5.如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么?
作者:中华石杉 面试题 如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么? 面试官心理分析 其实问这个问题,主要是考考你,redis ...
- Memcached(1)-----基本介绍
memcached memcached概述 memcached是LiveJournal旗下Danga Interactive公司开发的一款软件.memcached是一个高性能,分布式内存对象缓存系统, ...
- memcached原理全面剖析
memcached会预先分配内存,memcached分配内存方式称之为allocator, 首先,这里有3个概念: 1 slab 2 page 3 chunk 一般来说一个memcahced进程会预先 ...
随机推荐
- C++中的链式操作
代码编译环境:Windows7 32bits+VS2012. 1.什么是链式操作 链式操作是利用运算符进行的连续运算(操作).它的特点是在一条语句中出现两个或者两个以上相同的操作符,如连续的赋值操作. ...
- [UnityShader3]溶解与重现效果
參考链接:http://www.cnblogs.com/Esfog/p/DissolveShader.html 效果图: 从颜色变化来说,有三种,一种是纹理颜色.一种是纹理与黑边的混合颜色,一种是透明 ...
- MTK 手机芯片 2014 Roadmap
注:其中 A53 架构的是 64 位处理器. MT6733 魅蓝 MT6752 魅族 note 联通/移动版 MT6595 魅族 MX4
- arm-linux交叉编译环境搭建
1.解压交叉编译工具链包 tar jxvf EABI-4.3.3_EmbedSky_20100610.tar.bz2 (笔者将交叉编译工具链包放在”/home ”目录下) 解压后会生成两个目录: [r ...
- Appium启动报Permission Denial的问题
前言 在Android真机上跑自动化脚本时,发现在启动App时报java.lang.SecurityException: Permission Denial: starting Intent : 原先 ...
- js弹出QQ对话框在线交谈
<div style="position:absolute; top:110px; right:220px; z-index:2;"> <a target=&qu ...
- Web 监听器
什么事web 监听器? Servlet规范中定义的一种特殊类 用于监听ServletContext.HttpSession和ServletRequest等象的创建与销毁的事件 用监听域对象的属性发生修 ...
- 微信小程序 新手入门教程
因为工作需要,最近学习了一下微信小程序,在此分享一下大概的流程. 强烈建议大家先去看微信小程序简易教程:点我进入 起步: 安装微信web开发软件者工具,需要破解的同学可以网上找破解教程,很简单的,这里 ...
- js中一些常见写法的含义
1. 常见格式:(function() { /* code */ })(); 解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括号 ...
- POJ3258 River Hopscotch —— 二分
题目链接:http://poj.org/problem?id=3258 River Hopscotch Time Limit: 2000MS Memory Limit: 65536K Total ...