详解PHP多个进程配合redis的有序集合实现大文件去重


Posted in PHP onMarch 06, 2019

1.对一个大文件比如我的文件为

-rw-r--r-- 1 ubuntu ubuntu 9.1G Mar 1 17:53 2018-12-awk-uniq.txt

2.使用split命令切割成10个小文件

split -b 1000m 2018-12-awk-uniq.txt -b 按照字节切割 , 支持单位m和k

详解PHP多个进程配合redis的有序集合实现大文件去重

3.使用10个php进程读取文件 , 插入redis的有序集合结构中 , 重复的是插不进去的 ,因此可以起到去重的作用

<?php
 
$file=$argv[1];
//守护进程
umask(0); //把文件掩码清0
if (pcntl_fork() != 0){ //是父进程,父进程退出
    exit();
}  
posix_setsid();//设置新会话组长,脱离终端
if (pcntl_fork() != 0){ //是第一子进程,结束第一子进程 
    exit();
}  
 
 
$start=memory_get_usage();
 
$redis=new Redis();
$redis->connect('127.0.0.1', 6379);
 
$handle = fopen("./{$file}", 'rb');
while (feof($handle)===false) {
    $line=fgets($handle);
    $email=str_replace("\n","",$line);
    $redis->zAdd('emails', 1, $email);
}

详解PHP多个进程配合redis的有序集合实现大文件去重

4. redis中查看获取的数据

zcard emails 获取元素个数

详解PHP多个进程配合redis的有序集合实现大文件去重

取一定范围的元素 , 比如从100000开始 到 100100结束

zrange emails 100000 100100 WITHSCORES

以上所述是小编给大家介绍的PHP多个进程配合redis的有序集合实现大文件去重详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
PHP开发文件系统实例讲解
Oct 09 PHP
phpmail类发送邮件函数代码
Feb 20 PHP
php获取服务器信息的实现代码
Feb 04 PHP
php cli模式学习(PHP命令行模式)
Jun 03 PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 PHP
PHP也能干大事之PHP中的编码解码详解
Apr 20 PHP
织梦sitemap地图实时推送给百度的教程
Aug 03 PHP
php微信公众号开发(4)php实现自定义关键字回复
Dec 15 PHP
PHP面向对象程序设计OOP继承用法入门示例
Dec 27 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
Sep 30 PHP
PHP实现git部署的方法教程
Dec 19 PHP
一次因composer错误使用引发的问题与解决
Mar 06 #PHP
利用PHP如何统计Nginx日志的User Agent数据
Mar 06 #PHP
浅谈php://filter的妙用
Mar 05 #PHP
PHP实现微信小程序用户授权的工具类示例
Mar 05 #PHP
统计PHP目录中的文件数方法
Mar 05 #PHP
PHP常见字符串操作函数与用法总结
Mar 04 #PHP
php+Ajax处理xml与json格式数据的方法示例
Mar 04 #PHP
You might like
php file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php生成gif动画的方法
2015/11/05 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
2017/06/07 PHP
Prototype Number对象 学习
2009/07/19 Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
2010/07/26 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
详解JS预解析原理
2020/06/16 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
对TensorFlow中的variables_to_restore函数详解
2018/07/30 Python
python 模拟登陆163邮箱
2020/12/15 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
2020/06/01 HTML / CSS
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
爱情保证书范文
2014/02/01 职场文书
图书室标语
2014/06/21 职场文书
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript
Redis入门教程详解
2021/08/30 Redis
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server