如何实现海量关键词随机抽取一个
2024-12-07 20:22:17算法架构
摘要:假设某一个品类的关键词2万个,如果实现高效抽取呢
核心思路是:设计一个关键词表,后台导入上传存储,然后通过一定的发布机制发布到redis,前端页面srandmember随机抽一个。
有的同学会问 为啥不直接扔到一个文件夹,然后随机文件名,再随机行数获取一个呢,这样效率不是也很高啊?
为啥?你随机出来怎么锁定啊,后续与url的锁定,以及各种关联锁定要都有识别id的,所以还是要入mysql库,然后再存入kv数据库。
那么如何设计这个程序呢?
原理听上去很简单,实际上实现起来呢还是有几个核心点。
1、上传。导入txt先上传到服务器,然后对数据分割,有的时候关键词有10万的话,处理就需要下功夫了,新建一个队列系统分段式处理入库。
2、发布到内存这个技术。核心思路是先分页计算一共多少次,然后增加定时检测记录当前分页数,逐步递增发布,一页一页的压入,操作的同时要在前端做好变量统计以便实时观察进度。
3、前端随机抽取函数。
/*随机获取1个关键词id */
function get_kid_sj(){
global $pika;
global $site_type;
$sname='stype_ids_'.$site_type;
$arr_sj=$pika->srandmember($sname,1);
$kid='';
if(isset($arr_sj[0]))
$kid=$arr_sj[0];
return $kid;
}