php 数据 缓存,php终极数据缓存,比redis、GlobalData等快200倍以上,极致性能
一、效果:每秒读取2000万条。写入2200万条。cpu开销很小二、原理:1.将数据以数组方式存储在内存中,php进程需要数据时直接通过内存地址访问数据,没有任何IO开销以及CPU开销。
三、具体实现:1.利用linux的写时复制技术。运行php主进程一次性读取所有的数据保存到数组中,然后通过workerman监听端口。每次收到请求时:创建一个子进程去执行任务,执行完成之后子进程自动结束。
2.子进程完全共享主进程的数组,不消耗内存。
四、代码[code] ini_set('memory_limit','5872M'); // 临时设置最大内存占用为5G
$a = [[[[]]]];
$start = microtime(true);
for ($i=0; $i<=200; $i++) {
for ($j=0; $j<=100; $j++) {
for ($k=0; $k<=1000; $k++) {
$a[$i][$j][$k] = '我是一条数据';
}
}
}
// 2000万数据,时间1秒,消耗内存720M。 相当于1000万-0.5秒-360M
echo microtime(true) - $start, "s。主进程写入完成,当前内存:" . (memory_get_usage() / 1024 / 1024) . "MB
";
$start = microtime(true);
for ($i=0; $i<=200; $i++) {
for ($j=0; $j<=100; $j++) {
for ($k=0; $k<=1000; $k++) {
$m = $a[$i][$j][$k] ;
}
}
}
echo microtime(true) - $start, "s。主进程读取完成,当前内存:" . (memory_get_usage() / 1024 / 1024) . "MB
";
$start = microtime(true);
$intNum= 1; // 进程总数
$pids= array(); // 进程PID数组
for($i= 0; $i
{
$pids[$i] = pcntl_fork();// 产生子进程,而且从当前行之下开试运行代码,而且继承父进程的所有变量
if($pids[$i] == -1){echo"couldn't fork". "\n";
}elseif(!$pids[$i]){
$m= 0;
$start = microtime(true);
for ($i=0; $i<=200; $i++) {
for ($j=0; $j<=100; $j++) {
for ($k=0; $k<=1000; $k++) {
$m = $a[$i][$j][$k] ;
}
}
}
echo microtime(true) - $start, "s。子进程读取完成,当前内存:" . (memory_get_usage() / 1024 / 1024) . "MB
";
sleep(100);
exit(0);//子进程要exit否则会进行递归多进程,父进程不要exit否则终止多进程
}
}
echo microtime(true) - $start, "s。子进程创建完成,当前内存:" . (memory_get_usage() / 1024 / 1024) . "MB
";
sleep(200);[/code]
五:代码运行结果:
1.0883929729462s。主进程写入完成,当前内存:719.90679168701MB
0.66096806526184s。主进程读取完成,当前内存:719.90679168701MB
0.0097589492797852s。子进程创建完成,当前内存:719.90715026855MB
0.72923994064331s。子进程读取完成,当前内存:719.90715026855MB
php 数据 缓存,php终极数据缓存,比redis、GlobalData等快200倍以上,极致性能相关推荐
- 【大数据】AI、IoT、区块链这些技术与大数据融合,大数据基础软件干货不容错过
作者:刘学习 | 小编:阿软 在IT产业发展中,包括CPU.操作系统在内的基础软硬件地位独特,不但让美国赢得了产业发展的先机,成就了产业巨头,而且因为技术.标准和生态形成的壁垒,主宰了整个产业的发展 ...
- java stringbuffer 转数组_JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder...
JAVA之旅(十七)--StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder 讲完String,我们来聊聊他的小兄弟 一.StringB ...
- mysql缓存淘汰机制_Redis缓存总结:淘汰机制、缓存雪崩、数据不一致....
在实际的工作项目中, 缓存成为高并发.高性能架构的关键组件 ,那么Redis为什么可以作为缓存使用呢?首先可以作为缓存的两个主要特征: 在分层系统中处于内存/CPU具有访问性能良好, 缓存数据饱和,有 ...
- Redis 缓存和 MySQL 数据如何实现一致性?
需求起因 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节.所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库. 这个业务场景,主要 ...
- 数据结构(字典,跳跃表)、使用场景(计数器、缓存、查找表、消息队列、会话缓存、分布式锁)、Redis 与 Memcached、 键的过期时间、数据淘汰策略、持久化(RDB、AOF)
1. 数据结构 1.1 字典 dictht 是一个散列表结构,使用拉链法保存哈希冲突的 dictEntry /* This is our hash table structure. Every dic ...
- redis 查询缓存_Redis缓存总结:淘汰机制、缓存雪崩、数据不一致....
在实际的工作项目中, 缓存成为高并发.高性能架构的关键组件 ,那么Redis为什么可以作为缓存使用呢?首先可以作为缓存的两个主要特征: 在分层系统中处于内存/CPU具有访问性能良好, 缓存数据饱和,有 ...
- android对象缓存,Android简单实现 缓存数据
前言 1.每一种要缓存的数据都是有对应的versionCode,通过versionCode请求网络获取是否需要更新 2.提前将要缓存的数据放入assets文件夹中,打包上线. 缓存设计 代码实现 /* ...
- Redis概述_使用命令对redis的数据进行增删改查_Jedis连接redis进行数据操作_redis进行数据缓存案例
学习目标 redis 概念 下载安装 命令操作 1. 数据结构 持久化操作 使用Java客户端操作redis Redis 前言(从百度上抄的, 看看了解一下, 懒得排版了) 1. 概念: redis是 ...
- 交换机分布缓存_网络交换机缓存在数据中心的作用
什么产生了缓存?网络交换机要配置多少缓存才够用?缓存容量是否有标准可以衡量? 当网络交换机接口收到超出其所能处理的流量后,它会选择要么将其缓存,或者将其丢弃. 缓存通常都是因为网络接口速率不同造成的, ...
最新文章
- ssacnf和sprintf实战取ip地址
- CentOS下Clonezilla通过网络自动备份还原系统
- 2018.11:大数据在政府统计中的应用、瓶颈及融合路径(余芳东)
- 全球及中国再生橡胶产业发展动态及十四五运营状况分析报告2021版
- Netweaver是如何判断哪些对象可以被增强的
- [深度学习] 自然语言处理 --- 文本分类模型总结
- Web Hacking 101 中文版 八、跨站请求伪造
- 【Kafka】docker下kafka报错 IOException: Connection to xxx:19093 (id: 1002 rack: null) failed
- 四、shell编程练习题(1-20)
- the database profile could not loaded. Check log for details
- 重构:如何去掉代码中的S味
- matlab色度椭圆,matlab画色度图
- 90%人不知道的大厂面试流程和技巧
- idea 安装Vue插件 超详细
- 在屏幕上绘制圆形函数
- sko.GA实现遗传算法的源码解析
- centos7 配置phpAdmin
- 利用github进行账号授权登录
- vue 项目开发 lenovo商城
- c语言程序设计图书管理,C语言程序设计报告 图书馆信息管理系统
热门文章
- 圆满收官!我的2022 秋招总结与建议
- 卷起来了,写了一套Tensorflow和Pytorch的学习笔记(20G/代码/PPT/视频)
- java motherfree video_Java Config 下的Spring Test方式
- Java并发(二)——ThreadLocal
- Linux编程(1)_关于linux基础知识
- python编程入门----numpy不常见的小细节
- Kubernetes Resource QoS Classes介绍
- python接口自动化(十)--post请求四种传送正文方式(详解)
- 【二十三】win 10 :Jmeter 报告可视化 —— 配置生成测试报告仪表板,Jmeter + Jenkins 自动化构建生成 HTML 报告
- linux可配置哪些服务,不可不知 十大热门Linux服务器配置