memcached学习笔记1--概念
1、memcached是danga的一个项目,最早是LiveJournal服务的,最初为了加速LiveJournal访问速度而开发,后来被很多大型网站采用
官网: http://www.danga.com/
http://www.memcached.org/
2、memcached是高性能分布式的内存对象缓存系统,通过内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据 库检索的结果等。(可以是array,基本变量类型,对象,不能是“资源类型”)
简单来说:
将数据调到内存中,然后从内存中读取,从而大大提高内存的读取速度。
3、举例:
在用户查询系统中,网站的查询并发量很大,需要查询的用户数据也比较大!----根据用户id查询
①传统查询----查询数据库
$user_id = (int)$_GET['user_id'];
//查询数据库
mysql_query("select user_info from user where user_id = {$user_id}");//查询了数据库
....
//分配给模板
$this->assign('findUser');
因为高并发,所以会给数据库造成难以想象的压力
②页面缓存
$user_id = (int)$_GET['user_id'];
//判断是否已经存在被查询过的用户信息形成的静态页面
$user_{$user_id}_html = "这里是该静态页面的路径";
//存在,则读取该静态页面,否则查查询数据库
//查询数据库,并进行页面静态缓存
mysql_query("select user_info from user where user_id = {$user_id}");//查询了数据库
....
//分配给模板
$this->assign('findUser');
③内存缓存----memcached
将数据缓存在内存中,内存中读取的速度远远大于从文件中获取数据的速度
$user_id = (int)$_GET['user_id'];
//判断内存中是否已经存在该用户数据
$user_{$user_id}_info = 'memcached中查询是否有用户信息';
//存在,则读取该静态页面,否则查询数据库
//查询数据库,并进行一次mem缓存
mysql_query("select user_info from user where user_id = {$user_id}");//查询了数据库
....
//分配给模板
$this->assign('findUser');
说明:
访问速度如下
读取数据库(小网站)->页面缓存->内存缓存(大网站)
变化频繁,访问数据库中数据意义又不大的,往往存储在内存中,Mysql存储类型中有一个memory
memcached学习笔记1--概念的更多相关文章
- Oracle RAC学习笔记:基本概念及入门
Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章] oracle 10g real applica ...
- memcached学习笔记——存储命令源码分析下篇
上一篇回顾:<memcached学习笔记——存储命令源码分析上篇>通过分析memcached的存储命令源码的过程,了解了memcached如何解析文本命令和mencached的内存管理机制 ...
- memcached学习笔记——存储命令源码分析上篇
原创文章,转载请标明,谢谢. 上一篇分析过memcached的连接模型,了解memcached是如何高效处理客户端连接,这一篇分析memcached源码中的process_update_command ...
- Java IO学习笔记:概念与原理
Java IO学习笔记:概念与原理 一.概念 Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...
- Memcached 学习笔记(二)——ruby调用
Memcached 学习笔记(二)——ruby调用 上一节我们讲述了怎样安装memcached及memcached常用命令.这一节我们将通过ruby来调用memcached相关操作. 第一步,安装ru ...
- jQuery学习笔记之概念(1)
jQuery学习笔记之概念(1) ----------------------学习目录-------------------- 1.概念 2.特点 3.选择器 4.DOM操作 5.事件 6.jQuer ...
- Memcached学习笔记
[TOC] 前言 此为学习笔记汇总,如有纰漏之处,还望不吝指出,谢谢. 启动流程 调用settings_init()设定初始化参数 从启动命令中读取参数来设置setting值 设定LIMIT参数 开始 ...
- tensorflow学习笔记——常见概念的整理
TensorFlow的名字中已经说明了它最重要的两个概念——Tensor和Flow.Tensor就是张量,张量这个概念在数学或者物理学中可以有不同的解释,但是这里我们不强调它本身的含义.在Tensor ...
- AngularJs学习笔记--concepts(概念)
原版地址:http://code.angularjs.org/1.0.2/docs/guide/concepts 继续.. 一.总括 本文主要是angular组件(components)的概览,并说明 ...
- (一)Netty源码学习笔记之概念解读
尊重原创,转载注明出处,原文地址:http://www.cnblogs.com/cishengchongyan/p/6121065.html 博主最近在做网络相关的项目,因此有契机学习netty,先 ...
随机推荐
- hdu 1166:敌兵布阵(树状数组 / 线段树,入门练习题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 在php4下可用,简单的php数组转成json格式,
function array_to_json( $array ){ if( !is_array( $array ) ){ return false; } $ ...
- 在MSSQL中对ACCESS文件操作方式汇总
CSDN朋友问题回复: 有个ACCESS数据库文件在本机,机器上的OFFICE套件已经卸载,ACCESS没有用户名和密码,如何用MSSQLServer来查询和修改其文件内容? 比如ACCESS物理文件 ...
- 转 BHO API HOOK Wininet基于IE编程的一些资料
BHO原理:推荐vc base中的文章: 如何使用BHO定制你的Internet Explorer浏览器 API HOOK的基本原理:推荐C++ builder 研究中的文章: API Hook基 ...
- 一个工程两个target
有很多的应用有两个版本,可能只是ui上有一些不同,维护两份代码是很麻烦的,这时候我们可以在已有的工程target上copy这个target来达到一份代码两个应用版本的需求 duplicate就可以co ...
- css 层叠样式表
css选择器 派生选择器 根据其元素在其上下文关系来定义样式 <style type="text/css">body{ font-size:12px; color:re ...
- CCSpriteBatchNode的优化性能
当将大量精灵加载到CCLayer时,如果直接利用[self addChild:sprite]去加载,每加载一个精灵,都必须open,draw,close, 而利用 CCSpriteBatchNode去 ...
- JS中检测数据类型的四种方式及每个方式的优缺点
//1.typeof 用来检测数据类型的运算符 //->typeof value //->返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number". ...
- 过滤html字符的方法
昨天在看公司网站的产品详细页面,发现只有一个公司的JS产品轮换特效不会出,找了半天,程序都是一样的,原因是什么呢?原来是公司的别名是xiandahg,里面含有and字符被过滤掉了. public st ...
- 点击repeater的一个修改事件触发全部repeater每一行的修改事件
<td align="center"> <asp:LinkButton ID ="btnvip&q ...