memcahe
网站的瓶颈 主要集中在数据库 ,用缓存(直接操作内存)
存储计算机的内存,如果一旦服务器断电,数据都将清空
内存:memcached redis
基于文档:mongodb
memcache:基于内存的高性能的分布式的内存管理系统(C语言,PHP的一个扩展)
键值对的存储
使用memcache的客户端:PHP
1.安装memcache的服务器端 cmd
1.1 进入到memcached.exe的目录
1.2 memcached.exe -d install 安装
1.3 memcached.exe -d start 启动
memcached.exe -d stop:关闭
memcached.exe -d uninstall:卸载
netstat:显示协议统计和当前 TCP/IP 网络连接。
netstat -a 显示所有连接和侦听端口。 memcache默认的端口号为11211
2.客户端连接memcache(telnet localhost 11211)
stats:查看memcache运行状态信息
set 键 标识符 有效期 长度(只能存储字符串)
set name 1 0(永久) 10(存储的值必须是10个长度)
zhangsan
get 键
delete 键
flush_all :清空所有数据
stats cachedump 1 0:打印所有的数据
3.PHP连接memcache
1.将php_memcache.dll放在php目录下的ext目录下
2.在php.ini配置文件中, 确保安装PHP与memcache的扩展 extension = php_memcache.dll
3.重启apache,确认memcache扩展成功安装
memcache::addServer('localhost',11211)
memcache::set(key,value,MEMCACHE_COMPRESSED,有效期)
memcache::get(key)
memcache::delete(key)
memcache::flush():
高级session
baidu.com
tieba.baidu.com
music.baidu.com
sex.baidu.com
// 必须确保能够连接成功
session.save_handler = memcache
session.save_path = 'tcp://192.168.129.30:11211'
<?php // 1.实例化Memcache类 memcache
$mem = new Memcache; // 2.配置memcache
$mem->addServer('localhost',11211); // 3.向内存中添加数据(四种标量,数组,对象,是将这些数据类型转化为字符串进行存储)
$mem->set('username','zhangsan');
$mem->set('age',20);
$mem->set('price',20.99);
$mem->set('bool',true); $mem->set('info',['username'=>'lisi','age'=>20,'sex'=>'男']); class Person
{
public $name = 'wangwu';
public $age = 20;
public $sex = 1;
}
$mem->set('person',new Person); // set(键,值,指定压缩,设置有效期)
$mem->set('weight','100KG',MEMCACHE_COMPRESSED,10);
<?php
// 1.先实例化memcache
$mem = new Memcache;
$mem->addServer('localhost',11211); // 2.判断内存中存在对应的数据信息 // 将sql语句单独提取并加密取6位出来作为存入数据的键值
$sql = 'select * from demo_user';
$key = substr(md5($sql),0,6);
echo $key;
$data = $mem->get($key); if ($data) {
echo 'memcache服务器中有对应的数据信息';
} else {
/*
一个小时改变一次内容,将此内容缓存一个小时 在一个小时内,从计算机的缓存中读取数据,
如果过期,从数据库读取,同时向缓存中再存入一份数据,在保存10s中
*/
try
{
$pdo = new PDO('mysql:host=localhost;dbname=lamp129;charset=utf8','root','');
} catch (PDOException $p) {
echo $p->getMessage();
} $stmt = $pdo->query($sql);
$data = $stmt->fetchAll(PDO::FETCH_ASSOC); // 将查询到的数据向memcache中写入
$mem->set($key,$data,MEMCACHE_COMPRESSED,100); echo '这是从数据库读取到的信息';
}
<?php // 分布式缓存
$mem = new Memcache; // 连接多台memcache服务器
$mem->addServer('localhost',11211);
$mem->addServer('192.168.129.67',11211);
$mem->addServer('192.168.129.32',11211); for ($i=0;$i<100;$i++) {
$mem->set("user{$i}",'zhangsan');
} var_dump($mem->get('user10'));
当网站越来越大存储用户或者订单等session信息分布在不同的服务器上怎么办?www.tieba.baidu.com www.music.baidu.com www.baidu.com
session跨域共享问题:将上述的服务器都装上memcache可以用将session数据存入memcache而不存入文件了
找到php.ini
session_save_handler=files 默认
改为session_save_handler=memcache
session.save_path='c:\xampp\tmp'
改为 session.save_path='tcp://localhost:11211'
memcahe的更多相关文章
- 浅谈MemCahe
MemCahe 首先介绍下memcahce的定义:是一个分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.需要频繁访问数据库的网站访问速度提升效果十分显著. 接下来介绍 ...
- Memcahe安装与配置
1.先启动Memcahe服务 (1)通过Memcahe文件夹下的memcahe.exe程序启动 (2)将Memcahe加到Windows服务中去 为了方便使用,大多数情况下,是使用第二种方式,来启动M ...
- 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器
1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“- ...
- redis -memcahe
tomcat自动化集成 https://blog.51cto.com/ellenv/1932817 Redis与Memcache对比:1.Memcache是一个分布式的内存对象缓存系统而redis是可 ...
- nginx连接操作memcahe
nginx配置连接操作memcache nginx配置连接memcache: location / { set $memcached_key "$uri"; #设置memcache ...
- thinkphp3.2 中 Memcache 的配置和使用(memcahe的使用场景)
Thinkphp的默认缓存方式是以File方式,在/Runtime/Temp 下生成了好多缓存文件. TIPS: TP3.2支持的缓存方式有:数据缓存类型,支持:File|Db|Apc|Memcach ...
- [Java]Java日期及时间库插件 -- Joda Time.
来到新公司工作也有一个多月了, 陆陆续续做了一些简单的项目. 今天做一个新东西的时候发现了 Joda Time的这个东西, 因为以前用的都是JDK原生的时间处理API, 大家都知道Java原生的时间处 ...
- php 设计模式
一.工厂模式 1.创建接口类,规范方法,要实现这个接口的类必须实现这个接口的所有方法,接口的方法默认是抽象的,所以不再方法前面加 abstract interface people{ public f ...
- GO语言学习
1. 语言特色 可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了. 静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多 ...
随机推荐
- Java SE之初探反射机制
[Keywords]:Java,Hibernate,虚拟机,框架,SQL [Abstract]: 反射的概念:所谓的反射就是java语言在运行时拥有一项自观的能力,反射使您的程序代码能够得到装载到 ...
- TCP3次握手和4次挥手及其为什么
TCP 3次握手 客户端向服务器发送一个SYN(包含了SYN,SEQ). 当服务器接收到客户端发过来的SYN时,会向客户端发送一个SYN+ACK的数据包,其实ACK的ack等于上一次发送SYN数据包的 ...
- Python(十三)python的函数重载
首先,重载函数的功能是实现参数不同情况下功能相同的函数. 函数重载的目的是解决功能相同的函数的以下问题: 1.参数的类型: 2.参数的个数: 对于情况1,函数功能呢相同,参数不同的情况. python ...
- mysql 架构~mgr具体细节分析
一 简介:今天咱们来聊聊mgr的具体实现细节 二 关于多点写入的锁冲突问题以及处理: certify模块主要负责检查事务是否允许提交,是否与其它事务存在冲突,如两个事务可能修改同一行数据.在单机系 ...
- HTTP协议-响应报文格式
HTTP协议-响应码 浏览器向服务器发出请求,服务器处理可能是成功.可能是失败.可能没有权限访问等原因,服务器会通过响应码来告诉浏览器处理结果. " : OK " : Found ...
- SharePoint 2010 使用沙盒解决方案隐藏页面中的”元素”
起因: 一朋友问我如何隐藏SharePoint 2010中"回收站"和"所有网站内容".我告诉他需要写点css,然后他就蒙圈了(他是英文专业). 解决方案: 一 ...
- redis拾趣(客户端连接,keys命令,数据备份,缓存有效期等)
1.客户端连接 为了安全保护,redis支持绑定IP跟端口,这个通过conf配置文件中的bind跟port来设置. 绑定后登录client控制台时就需要写明ip(或者hostname)跟端口了,如: ...
- mysql安装与卸载(绿色版)
1.下载压缩包,解压 2.配置环境变量 PATH:%MYSQL_HOME%\bin 3.在安装目录下新建my.ini配置文件: [mysql] default-character-set=utf8 [ ...
- python下的socket常用方法举例
python下的socket 1.简单的server和client端的socket代码 server.py: #!/usr/bin/env python #_*_ coding:utf-8 _*_ i ...
- Python-生产者消费模型 线程
7.生产者消费者模型(*****)(思聪吃热狗代码) 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题. 该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度 为什么要使 ...