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(新浪的新闻频道)
转载于:https://www.cnblogs.com/Zell-Dinch/p/3901590.html
memcached学习笔记6--浅谈memcached的机制 以及 memcached细节讨论相关推荐
- memcached学习笔记1(windows 7 64bit 环境下安装memcached)
windows 7 64bit 环境下安装memcached 1.下载后解压到D:\memcached(下载地址:memcached-win64下载地址) 2.安装到windows服务,打开cmd命令 ...
- 转 Android开发学习笔记:浅谈WebView
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangruijun.blog.51cto.com/3061169/647456 ...
- C#3.0学习笔记(8)浅谈接口interface
1, 接口的定义? 答:接口表示一组函数成员而不实现成员的引用类型,类和结构可以实现接口. 2, 接口的意义及为什么要使用接口? 要理解接口的意义以及为什么它是有用的,让我们先来看看下面的代码,它接受 ...
- android 自定义菜单开发,Android开发学习笔记:浅谈3大类菜单
在Android系统中,菜单可以分为三类:选项菜单(Option Menu),上下文菜单(Context Menu)以及子菜单(Sub Menu). 一.选项菜单(Option Menu) 创建选项菜 ...
- Android开发学习笔记:浅谈Content Provider
一.Content Provider的概念介绍 Content Providers是所有应用程序之间数据存储和检索的桥梁,它使得各个应用程序之间实现数据共享.是应用程序间共享数据的唯一途径.Conte ...
- 【学习笔记】浅谈短小可爱的左偏树(可并堆)
文章目录 左偏树 左偏树的合并(merge)操作 例题 罗马游戏 [Apio2012]dispatching [JLOI2015]城池攻占 [Baltic2004]sequence 左偏树 左偏树是一 ...
- 【学习笔记】浅谈广义矩阵乘法——动态DP
文章目录 广义矩阵乘法 动态DP 例题:洛谷4719 以下内容是本人做题经验,如有雷同,纯属抄袭:如有不对,纯属不懂,还请指正 广义矩阵乘法 众所周知,矩阵满足乘法交换律,前一个矩阵的列必须是后一个矩 ...
- Docker学习笔记之浅谈虚拟化和容器技术
0x00 概述 相信所有对 Docker 有所耳闻的朋友都知道,它是一款以容器虚拟化技术为基础的软件,因此在了解有关 Docker 的概念知识和使用方法之前,虚拟化和容器技术是我们不可或缺的基础知识. ...
- Android开发学习笔记:浅谈ToggleButton
ToggleButton(开关按钮)是Android系统中比较简单的一个组件,是一个具有选中和未选择状态双状态的按钮,并且需要为不同的状态设置不同的显示文本. ToggleButton常用的XML属性 ...
- 学习笔记:浅谈NP完全性问题
迄今为止,我们所研究的所有算法几乎都是多项式时间的算法:对于规模为n的输入,在最坏情况下的运行时间是O(n^k),其中k为某一确定的常数. 如果一个判定问题的复杂度是该问题的一个实例的规模n的多项式函 ...
最新文章
- 王道考研 计算机网络笔记 第六章:应用层
- 幅度调制信号 matlab,《利用MATLAB实现信号的幅度调制与解调.doc
- kong 使用jwt RSA256证书
- Scala 函数传名调用(call-by-name)
- oracle express介绍
- 【MySQL】Java对SQL时间类型的操作(获得当前、昨天、前年。。时间)
- mysql 增量备份脚本_MySQL自动化(全量+增量)备份脚本
- 计算机科学学院参加些什么比赛,【安全月进行时】计算机科学学院成功举办2019年实验室安全知识竞赛活动...
- 转移符 个人工作中使用记录一下
- java工程中的相关路径
- 机器学习算法——神经网络6(SOM网络)
- Java 常见异常以及处理方式
- C语言求素数的简化算法
- asp.net 获取网页源文件的方法
- 【高德地图API】Web地图开发系列(一)
- 软件测试体系学习及构建(8)-HTML之图像,表格,列表,区块
- linux kde磁盘扫描,在KDE桌面中使用Krusader进行更好的文件管理 | MOS86
- C#【必备技能篇】两个程序(进程间)通信,传递消息给其它窗口
- Ubuntu20.04下的编译与运行LeGO-LOAM【问题解决】
- JAVA开源资源(非大全)
热门文章
- 【知识小课堂】mongodb 之 特殊集合及索引
- AndroidManifest Intent-Filter Action android:name属性
- android 根据文件Uri获取图片url
- ORACLE会话数、连接数配置
- Java并发编程—ThreadLocal底层原理
- HDU 2047 阿牛的EOF牛肉串
- 首次使用eclipes运行项目报错“Java.lang.ClassNotFoundException”
- Kafka 入门之集群部署遇到问题
- 重温Javascript(四)-函数
- UTF-8编码规则(转)