1.对于像我这样的大文件,它是
-rw-r-r-1 Ubuntu Ubuntu 9.1G 3月1日17:53 2018-12-awk-uniq.txt
2.使用split命令剪切成10个小文件
split-b 1000m 2018-12-awk-uniq . txt-b按字节切割,支持单位m和k。
3.使用10个php进程读取文件,并将其插入redis的有序集合结构中。重复不能插入,因此它可以在重复数据消除中发挥作用
?PHP $ file=$ argv[1];//daemon umask(0);//清除文件掩码0if (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);}
4.在Redis中查看获取的数据
Zcard电子邮件获取元素数量
取一定范围的元素,比如从100000开始,到100100结束
zrange电子邮件100000 100100 WITHSCORES
以上是边肖介绍的PHP流程,配合redis的有序收集,实现大文件的详解和集成。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!