memcached学习笔记6--浅谈memcached的机制 以及 memcached细节讨论
附:请浅谈memcached的机制
答: ①基于C/S架构,协议比较简单
c/s架构,此时memcached为服务器端,我们可以使用如PHP,c++/c等程序连接memcached服务器。
memcached的服务器客户端通信并不使用XML等格式,而使用简单的基于文本行的协议,因此通过telnet也能在memcached上保存、读取数据。
②基于libevent事件来处理的
libevent是一套垮平台的事件处理接口的封装,能够处理兼容包括这些操作系统:
windows/Linux/BSD/Solaris等操作系统的事件处理
memcached使用libevent来进行网络并发连接处理,能够保持在很大的并发情况下,仍旧可以保持快速的响应能力!
③内置内存存储方式
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中,由于数据仅存在于内存中,因此重启memcached,重启操作系统会导致全部的数据消失,另外内存容量达到指定值之后,就基于LRU(least recently used)算法自动删除不使用的缓存。memcached本身是为缓存设计的服务器,因此并没有过多考虑数据的永久性问题。
④基于客户端分布式
memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息,那么,怎样进行分布式呢?这完全取决于客户端的实现。
memcached1 memcached2 memcached3
分布式算法
客户端程序库
PHP应用程序
PHP应用程序要管理三个memcached服务器,客户端进行操作,然后数据保存在经过memcached分布式算法的memcached服务器中一个上。
memcached细节讨论:
1、生命周期
①Apache关闭后
②Apache没关闭,但是缓存时间到
③memcached服务关闭
2、memcached数据存在什么地方
存放于memcached所在机器的这个内存中
3、memcached最佳实践
①将从数据库查询的数据存放在memcached中
<?php
$user_id = (int)$_GET['user_id'];
//判断memcached中是否存在user_id
$mc = new Memcache();
if ($user = $mc -> get('user_id')) {
//找到,直接取出值
dump($user);
} else {
//未找到查询数据库
ob_start();
$user = //查询数据库操作,得到数据
//缓存起来,压缩,保存24小时
$mc -> set($user_id, $user, MEMCACHED_COMPRESSED, 3600*24);
//分配到模板中
$this->assign('user', $user);
ob_end_flush();
}
②将session数据存放在memcached中
默认情况下,session数据是存在服务器中的文件上的。
完成以下配置,直接搞定:
①保证memcache扩展开启,memcached运行
②设置php.ini中session.save_handler = memcache
③设置php.ini中session.save_path = tcp://localhost:11211
④也可以通过php函数ini_set()函数进行页面中的设置。
小结:
我们只需要在php.ini中进行以上配置,那么session将不会按照文件的格式存储在服务器上,而是存储在memcached服务器内存中。调用的时 候依然按照原来session文件存储格式方式调用即可: 即, $user_id = $_SESSION['user_id'];
③memcached的数据是无用户状态的,不会和某个用户绑定。
④memcached访问安全性
windows下
设置防火墙:打开防火墙并设置例外
Linux下
iptables -a input -p 协议 -s 可以访问ip -dport 端口 -j ACCEPT
4、
什么样的数据适合放Memcached中?
变化频繁,据有不稳定性的数据,不需要实时入库(比如用户在线状态,在线人数)
门户网站的新闻等,觉得页面静态化仍不能满足要求
什么样的数据不适合放Memcached中?
银行股票证券系统时时变化
数据量过大,比如优酷网的视频
总结:
如果是一个小网站,PV值不大,就不考虑使用memcached
变化频繁,查询频繁,但是不一定写入数据库(适合memcached)(用户在线状态,用户在线人数)
变化频繁一变化就要入库的,比如股票,金融(不适合memcached)
变化不频繁,查询很频繁,不管入不入库都比较适合memcached(新浪的新闻频道)
memcached学习笔记6--浅谈memcached的机制 以及 memcached细节讨论的更多相关文章
- 【SSH学习笔记】浅谈SSH框架
说在前面 本学期我们有一门课叫做Java EE,由陈老师所授,主要讲的就是Java EE 中的SSH框架. 由于陈老师授课风格以及自己的原因导致学了整整一学期不知道在讲什么,所以才有了自己重新学习总结 ...
- (转)memcached学习笔记1(windows 7 64bit 环境下安装memcached)
windows 7 64bit 环境下安装memcached 1.下载后解压到D:\memcached(下载地址:memcached-win64下载地址) 2.安装到windows服务,打开cmd命令 ...
- Android开发学习笔记:浅谈GridView
GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的.主要用于设置Adapter. GridView常用的X ...
- Android开发学习笔记:浅谈显示Intent和隐式Intent
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangruijun.blog.51cto.com/3061169/655132 ...
- Android开发学习笔记:浅谈WebView(转)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangruijun.blog.51cto.com/3061169/647456 ...
- Android开发学习笔记:浅谈WebView
本文转自:http://www.2cto.com/kf/201108/101518.html WebView(网络视图)能加载显示网页,可以将其视为一个浏览器.它使用了WebKit渲染引擎加载显示网页 ...
- Docker学习笔记之浅谈虚拟化和容器技术
0x00 概述 相信所有对 Docker 有所耳闻的朋友都知道,它是一款以容器虚拟化技术为基础的软件,因此在了解有关 Docker 的概念知识和使用方法之前,虚拟化和容器技术是我们不可或缺的基础知识. ...
- 转 Android开发学习笔记:浅谈WebView
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangruijun.blog.51cto.com/3061169/647456 ...
- memcached学习笔记——存储命令源码分析下篇
上一篇回顾:<memcached学习笔记——存储命令源码分析上篇>通过分析memcached的存储命令源码的过程,了解了memcached如何解析文本命令和mencached的内存管理机制 ...
- memcached学习笔记——存储命令源码分析上篇
原创文章,转载请标明,谢谢. 上一篇分析过memcached的连接模型,了解memcached是如何高效处理客户端连接,这一篇分析memcached源码中的process_update_command ...
随机推荐
- 关于setTimeout的妙用前端函数节流
最近在某团队忙于一个项目,有这么一个页面,采用传统模式开发(吐槽它为什么不用React),它的DOM操作比较多,然后性能是比较差的,尤其当你缩放窗口时,可怕的事情发生了,出现了卡顿,甚至浏览器瘫痪.为 ...
- Android SQLite总结(一) (转)
Android SQLite总结(一) 郑海波 2012-08-21 转载请声明:http://blog.csdn.net/nuptboyzhb/article/details/7891887 前言 ...
- JeeWx 微信管家平台
.平台简介 Jeewx是一款开源.免费的微信管家系统(多触点管理平台),2014年荣获CSDN开发商大会第一名.采用JAVA语言,支持微信公众号.微信企业号.支付宝服务窗等多触点管理.Jeewx实现了 ...
- php 字符串式非关联数组循环
$xiangmu='1,2,3'; $xiangmu=explode(',',$jc['xiangmu']); $xm=''; for($i=0;$i<count($f)-1;$i++){ $x ...
- Apple Watch开发快速入门教程
Apple Watch开发快速入门教程 试读下载地址:http://pan.baidu.com/s/1eQ8JdR0 介绍:苹果为Watch提供全新的开发框架WatchKit.本教程是国内第一本A ...
- Ajax优缺点
1.页面无刷新,用户体验好: 2.异步通信,迅速的响应能力: 3.按需取数据,减少冗余需求,减少服务器负荷. 4.破坏浏览器后退按钮的正常行为. 5.Ajax的核心是JavaScript对象XmlHt ...
- DP ZOJ 3872 Beauty of Array
题目传送门 /* DP:dp 表示当前输入的x前的包含x的子序列的和, 求和方法是找到之前出现x的位置(a[x])的区间内的子序列: sum 表示当前输入x前的所有和: a[x] 表示id: 详细解释 ...
- POJ2240 Arbitrage(Floyd判负环)
跑完Floyd后,d[u][u]就表示从u点出发可以经过所有n个点回到u点的最短路,因此只要根据数组对角线的信息就能判断是否存在负环. #include<cstdio> #include& ...
- Cyclic Nacklace[HDU3746]
Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- NOI2012 : 迷失游乐园
终于补完NOI2012了好开心~ 题目大意:给定一棵树或者环套外向树,求出从中随机选一条简单路径的期望长度,环上点数不超过20. 设 d[x]表示x的度数,ch[x]表示x孩子个数 up[x]表示x向 ...