詳解PHP多個進程配合redis的有序集合實現(xiàn)大文件去重
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 按照字節(jié)切割 , 支持單位m和k
3.使用10個php進程讀取文件 , 插入redis的有序集合結(jié)構(gòu)中 , 重復(fù)的是插不進去的 ,因此可以起到去重的作用
<?php $file=$argv[1]; //守護進程 umask(0); //把文件掩碼清0 if (pcntl_fork() != 0){ //是父進程,父進程退出 exit(); } posix_setsid();//設(shè)置新會話組長,脫離終端 if (pcntl_fork() != 0){ //是第一子進程,結(jié)束第一子進程 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); }
4. redis中查看獲取的數(shù)據(jù)
zcard emails 獲取元素個數(shù)
取一定范圍的元素 , 比如從100000開始 到 100100結(jié)束
zrange emails 100000 100100 WITHSCORES
以上所述是小編給大家介紹的PHP多個進程配合redis的有序集合實現(xiàn)大文件去重詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
php異步:在php中使用fsockopen curl實現(xiàn)類似異步處理的功能方法
下面小編就為大家?guī)硪黄猵hp異步:在php中使用fsockopen curl實現(xiàn)類似異步處理的功能方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12PHP中 empty() 和 isset() 的區(qū)別介紹
作為PHP中經(jīng)常用來判斷變量是否為空的函數(shù):empty()和isset() ,二者其實在很多方面還是存在區(qū)別的,本文將為大家詳細介紹一下他們的區(qū)別之處,需要的朋友可以了解一下2021-12-12PHP Trait代碼復(fù)用類與多繼承實現(xiàn)方法詳解
這篇文章主要介紹了PHP Trait代碼復(fù)用類與多繼承實現(xiàn)方法,結(jié)合實例形式詳細分析了Trait代碼復(fù)用類的原理并結(jié)合具體實例形式分析了php基于Trait多繼承的相關(guān)實現(xiàn)與使用技巧,需要的朋友可以參考下2019-06-06PHP引擎php.ini參數(shù)優(yōu)化深入講解
這篇文章主要介紹了PHP引擎php.ini參數(shù)優(yōu)化深入講解,php.ini設(shè)置可以提高php的響應(yīng)速度,有感興趣的同學(xué)可以學(xué)習(xí)下2021-03-03PHP實現(xiàn)仿百度文庫,豆丁在線文檔效果(word,excel,ppt轉(zhuǎn)flash)
這篇文章主要介紹了PHP實現(xiàn)仿百度文庫,豆丁在線文檔效果,可實現(xiàn)word,excel,ppt轉(zhuǎn)flash顯示的功能,結(jié)合實例形式分析了常見的解決方案與CentOS環(huán)境下的實現(xiàn)技巧,需要的朋友可以參考下2016-03-03php循環(huán)檢測目錄是否存在并創(chuàng)建(循環(huán)創(chuàng)建目錄)
php循環(huán)檢測目錄是否存在并創(chuàng)建,需要的朋友可以參考下。2011-01-01PHP array_multisort()函數(shù)的使用札記
array_multisort 對多個數(shù)組或多維數(shù)組進行排序的函數(shù),需要的朋友可以參考下。2011-07-07