
正文
超级简单的Memcache入门
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Memcache
-
就是一个数据库,将数据保存在内存中
-
常用于缓存服务器,保存操作频繁,丢失无所谓的数据
启动选项
-
-d 是一个守护进程
-
-m 内存分配
-
-u 用户
-
-l 监听地址
-
-p 端口
-
-c 最大并发连接数
-
-p pid文件路径
就是一个数据库,将数据保存在内存中
常用于缓存服务器,保存操作频繁,丢失无所谓的数据
-
-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
增/改 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的客户端分别是 Me(老客户端) 和 Med (新客户端)
还有就是Me这个扩展好像是没有Php7以上的版本 = =,具体我也没有去看。
关于Med 和 Me 的Api还是有一点差别的。
Me相关特性
-
惰性过期 (Lazy Expiration) 只有在get时才会主动检测是否过期
-
最近最少使用 (Least Recently Used) 内存已满清空下,将最少使用的数据删除
-
单个key_name 最大 250字节
-
一个item 最大可以存1m 的数据
Session 入 Me
惰性过期 (Lazy Expiration) 只有在get时才会主动检测是否过期
最近最少使用 (Least Recently Used) 内存已满清空下,将最少使用的数据删除
单个key_name 最大 250字节
一个item 最大可以存1m 的数据
在多台服务器的(如:集群)这种情况下,会做到session无法共享,这样就无法去认证用户。
于是就有了session入库,或把session存入Me之类的做法。
当然了,在如今,关于认证不仅仅可以用session去做,还可以用 JWT 之类的技术去实现。
什么是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中。







