超级简单的Memcache入门
Memcache
就是一个数据库,将数据保存在内存中
常用于缓存服务器,保存操作频繁,丢失无所谓的数据
启动选项
-d 是一个守护进程
-m 内存分配
-u 用户
-l 监听地址
-p 端口
-c 最大并发连接数
-p pid文件路径
作为后台启动 memcached -p 11211 -m 64m -d -u root
! telnet推出的时候 quit ,^c完全没有用
操作Me
增/改 set set key 是否压缩(0 - 否 ,1 - 是) 缓存时间 / s 数据长度 ,回车后输入 val
获取值 get key
添加键数据 add key 是否压缩 缓存时间 数据长度 (只能添加不能修改)
修改键数据 replace key 是否压缩 缓存时间 数据长度
删除键 delete key
删除所有键 flush_all
递增 incr 和 递减 decr key number
查看Me允许状态 stats , 以下为状态表
pid: memcache服务器进程ID
uptime:服务器已运行秒数
time:服务器当前Unix时间戳
version:memcache版本
pointer_size:操作系统指针大小
rusage_user:进程累计用户时间
rusage_system:进程累计系统时间
curr_connections:当前连接数量
total_connections:Memcached运行以来连接总数
connection_structures:Memcached分配的连接结构数量
cmd_get:get命令请求次数
cmd_set:set命令请求次数
cmd_flush:flush命令请求次数
get_hits:get命令命中次数
get_misses:get命令未命中次数
delete_misses:delete命令未命中次数
delete_hits:delete命令命中次数
incr_misses:incr命令未命中次数
incr_hits:incr命令命中次数
decr_misses:decr命令未命中次数
decr_hits:decr命令命中次数
cas_misses:cas命令未命中次数
cas_hits:cas命令命中次数
cas_badval:使用擦拭次数
auth_cmds:认证命令处理的次数
auth_errors:认证失败数目
bytes_read:读取总字节数
bytes_written:发送总字节数
limit_maxbytes:分配的内存总大小(字节)
accepting_conns:服务器是否达到过最大连接(0/1)
listen_disabled_num:失效的监听数
threads:当前线程数
conn_yields:连接操作主动放弃数目
bytes:当前存储占用的字节数
curr_items:当前存储的数据总数
total_items:启动以来存储的数据总数**(包括过期的)**
evictions:LRU释放的对象数目
reclaimed:已过期的数据条目来存储新数据的数目
Php集合Me
php有两个Me的客户端分别是 Me(老客户端) 和 Med (新客户端)
还有就是Me这个扩展好像是没有Php7以上的版本 = =,具体我也没有去看。
关于Med 和 Me 的Api还是有一点差别的。
Me相关特性
惰性过期 (Lazy Expiration) 只有在get时才会主动检测是否过期
最近最少使用 (Least Recently Used) 内存已满清空下,将最少使用的数据删除
单个key_name 最大 250字节
一个item 最大可以存1m 的数据
Session 入 Me
在多台服务器的(如:集群)这种情况下,会做到session无法共享,这样就无法去认证用户。
于是就有了session入库,或把session存入Me之类的做法。
当然了,在如今,关于认证不仅仅可以用session去做,还可以用 JWT 之类的技术去实现。
这里主要实现一下 Session 入 Me
有一下几种方式:
先去修改 php.ini 配置 session.save_handler = files >> memcache 修改保存工具 session.save_path = "tcp://127.0.0.1:11211" 同时要修改保存地址,因为已经不是文件了 (这种最简单的说)
临时修改,同上以用,只是在文件的顶端加入 ini_set(set_name,set_config)
自定义会话存储函数 从5.4开始可以去实现SessionHandlerInterface这个工具接口。
class MeSessionHandler implements \SessionHandlerInterface
{
priavte $me; public static function start()
{
# 更改session存储方式
session_set_have_handler(new self, true);
session_start();_
} public function open($savePath, $sessionName)
{
$this->me = new Memcache();
$this->me->addServer('localhost', 11211);
return true;
} public function close()
{
return true;
} public function read($sessionId)
{
return $this->me->get($sessionId) ? : '';
} public function write($sessionId, $data)
{
return $this->me->set($sessionId, $data);
} public function destroy($sessionId)
{
return true;
} public function gc($lifeTime)
{
return true;
} }
接下来 MeSessionHandler::start() 就可以开启session了,这时候往 $_SESSION去存入到时候,则会存入Me中。
超级简单的Memcache入门的更多相关文章
- JS基础(超级简单)
1 JS基础(超级简单) 1.1 数据类型 1.1.1 基本类型: 1) Number:特别注意:NaN的检测方法:Nan!=NaN;或者使用isNaN方法 2) ...
- JavaScript,一个超级简单的方法判断浏览器的内核前缀
先说明,此处的方法是说超级简单的方法,不是指代码超级少,而是用非常简单的知识点,只要懂得怎么写JavaScript的行内样式就可以判断. 大家应该还记得JavaScript行内样式怎么写吧?(看来我是 ...
- zw版_Halcon图像交换、数据格式、以及超级简单实用的DIY全内存计算.TXT
zw版_Halcon图像交换.数据格式.以及超级简单实用的DIY全内存计算.TXT Halcon由于效率和其他原因,内部图像采用了很多自有格式,提高运行速度,但在数据交换方面非常麻烦. 特别是基于co ...
- 一个简单的iBatis入门例子
一个简单的iBatis入门例子,用ORACLE和Java测试 目录结构: 1.导入iBatis和oracle驱动. 2.创建类Person.java package com.ibeats;import ...
- phpexcelreader超级简单使用
phpexcelreader超级简单使用 该php类可以到官网下载:http://www.codeplex.com/PHPExcel,下载的文件不能直接使用要看下面的备注. 备注: 1.要将olere ...
- 哈,又一款超级简单的队列(MQ)实现方案来了~
开源的消息队列已经很多了,但大部分很重,实际环境下,很多可能只是使用到了一点功能而已,杀鸡使用牛刀,着实有些浪费了.很多时候,我们只想要一片绿叶,但它们给了我们整个的春天,很难消化.本着DIR精神, ...
- JQuery -> 超级简单的下拉菜单
使用jquery实现一个超级简单的下拉菜单. 效果图 最初的效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRmVlTGFuZw==/font/5a6L ...
- html超级简单实现点赞(收藏)和取消赞效果
1.前言 我们经常会遇到对一些列表呀进行点赞呀收藏数据等效果呀.今天就用html+css实现超级简单易上手的点赞和取消赞的demo展示. 2.详情 1.css样式 .like{ font-size:6 ...
- Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷
Android高级控件(四)--VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷 是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很 ...
随机推荐
- Good Time------打卡让生活更美好
Section 1团队介绍 Part 1 队员信息 姓名 学号 职务 王怡镔 2016012045 组长 于鑫宇 2016012029 组员 张济吨 2016012072 组员 黄鹤 20160120 ...
- Python学习第七课
Python学习第七课 'Alex' "Alex"print('hello'*5) #重复输出字符串 print('hellowold'[2:]) #类似于切片操作:会取出 llo ...
- JIRA 7.8 版本的安装与破解
jira的运行是依赖java环境的,也就是说需要安装jdk并且要是1.8以上版本 除此之外,我们还需要安装MySQL,为jira创建对应的数据库.用户名和密码,如下: 注意:建库名jira,字符集为U ...
- golang的map
map--字典 map的基本使用: package main import "fmt" // 先声明 type PersonInfo struct { id string name ...
- linux中的baff/cache占用大量内存,如何清理?
执行命令echo 3 > /proc/sys/vm/drop_caches,即可清空buff/cache 参考http://blog.csdn.net/kevins_lee/article/de ...
- memcached命令行、Memcached数据导出和导入、php连接memcache、php的session存储到memcached
1.memcached命令行 telnet 127.0.0.1 11211set key2 0 30 2abSTOREDget key2VALUE key2 0 2abEND 如: set key3 ...
- [经验分享] MySQL Innodb表导致死锁日志情况分析与归纳【转,纯学习】
在定时脚本运行过程中,发现当备份表格的sql语句与删除该表部分数据的sql语句同时运行时,mysql会检测出死锁,并打印出日志. 两个sql语句如下: (1)insert into backup_ta ...
- JVM运行时数据区域
上面已经聊过JVM是什么东东,也谈过了JVM内存的垃圾回收机制.这一篇博客我们来聊聊JVM运行时数据区域. JVM运行时数据区域由5块部分组成,分别是堆,方法区,栈,本地方法栈,以及程序计数器组成. ...
- 关于java的跨平台特性
Write once, compile anywhere,“一次编译,到处运行”的著名口号大家想必都听说过吧一次编译:把java代码(.java文件)通过编译器转换成字节码(.class文件)(符合j ...
- Alpha阶段个人心得
在一个学期的学习中,我从一个只会一个人打打小规模代码的初学者也变成了一个能参与到团队做项目的“入门码农”,而我们团队从一开始对大型项目的望而生畏无从下手变成细分任务各司其职,也了解并感受到github ...