一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 詳解PHP多個進程配合redis的有序集合實現大文件去重

詳解PHP多個進程配合redis的有序集合實現大文件去重

2019-06-05 11:15陶士涵的菜地服務器之家 PHP教程

這篇文章主要介紹了PHP多個進程配合redis的有序集合實現大文件去重,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習 吧

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的有序集合實現大文件去重詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男女被爆动漫羞羞动漫 | 2021日本三级理论影院 | a国产在线| 96日本xxxxxxxxx70 95在线观看精品视频 | 亚洲国产99999在线精品一区 | 午夜在线观看免费完整直播网页 | 欧美黑人成人免费全部 | 99这里都是精品 | 日产中文乱码卡一卡二 | 99人中文字幕亚洲区 | 国产乱子伦一区二区三区 | 黄色a∨ | 国产欧美日韩免费一区二区 | 四川一级毛片 | 亚洲国产黄色 | 兽皇日本 | 国产精品视频自拍 | 欧美国产日本精品一区二区三区 | 精品国产品国语在线不卡丶 | 精品国产成人 | 精品久久久久久久久久久 | 国产在线观看网站 | 欧美夫妇野外交换hd高清版 | 日本福利片国产午夜久久 | 九九热在线视频观看这里只有精品 | 日本护士xxxx爽爽爽 | 色婷婷婷丁香亚洲综合不卡 | 男人看的网址 | 大肚孕妇的高h辣文 | 欧美人曾交 | 99九九成人免费视频精品 | 日日精品| 91免费破解版 | 午夜小视频免费 | 欧美国产日韩在线 | 亚洲精品久久7777777 | 国产精品成人免费 | 扒开双腿疯狂进出爽爽动态图 | 天天干夜夜玩 | 亚洲国产成人久久综合一区77 | 小便japanesewctv |