当前位置: 首页 > news >正文

温州做网站公司有哪些日照网站优化公司

温州做网站公司有哪些,日照网站优化公司,web前端开发主要学哪些技术,网易邮箱企业邮箱怎么注册前言: 继续之前的 向爬虫而生---Redis 基石篇5 <拓展Zset>-CSDN博客 一些比较基础的redis类型在初中级阶段用着没有毛病,但是到了大数据时代,慢慢一些更高级的场景,就需要把这几个类型搬出来了! 正文: 概念: 当我们需要对一个大型数据集进行去重计…

前言:

继续之前的

向爬虫而生---Redis 基石篇5 <拓展Zset>-CSDN博客

一些比较基础的redis类型在初中级阶段用着没有毛病,但是到了大数据时代,慢慢一些更高级的场景,就需要把这几个类型搬出来了!

正文:

概念:

当我们需要对一个大型数据集进行去重计数时,传统的集合或者基数计数方法可能会面临内存消耗较大的问题。这时,Redis的HyperLogLog(HLL)数据结构就可以派上用场了。

HyperLogLog是一种基数估计算法,它可以通过占用固定的内存空间来估计一个集合中不重复元素的数量,而无需存储实际的元素。它的特点是具有较小的内存占用和高度的近似精度

下面是一些关键概念和特性

基础原理:

HyperLogLog使用随机哈希函数将输入元素映射到一个固定长度的二进制字符串。这些二进制字符串被组织为一个位图,其中每个位被用于存储零或一。通过统计位图中置为一的位的数量,就可以估计不重复元素的数量。

精度和误差:

HyperLogLog可以提供高度的近似精度,一般误差在0.81%以内(官方给的数据,其实可以忽略)。在正常情况下,随着不重复元素数量增加,误差会保持在相对稳定的范围内。

容量和内存占用:

HyperLogLog的固定内存占用仅取决于预先设定的精度和要统计的元素数量。这意味着,无论原始集合大小如何,都能以相对较小的内存占用进行近似计数---大约12KB

数据合并

HyperLogLog提供了数据合并的功能,即多个HLL数据结构可以合并为一个,而不会对计数结果产生明显的影响。

Redis命令:

在Redis中,可以使用以下命令进行HyperLogLog操作:PFADD、PFCOUNT、PFMERGE等。通过这些命令,可以添加元素、获取近似计数以及合并HLL数据结构。

Redis中提供了以下命令用于操作HyperLogLog数据结构:

1.PFADD key element [element ...]

将一个或多个元素添加到给定的HyperLogLog数据结构中。

2.PFCOUNT key [key ...]

估计给定HyperLogLog数据结构中的不重复元素数量。

3.PFMERGE destkey sourcekey [sourcekey ...]

将多个HyperLogLog数据结构合并到一个目标HyperLogLog中。

4.PFDEBUG subcommand [arguments ...]

调试命令,用于在Redis服务器端打开或关闭HyperLogLog的内部低级别调试。

(这些命令可以通过执行REDIS-cli命令行工具或者在编程语言中使用Redis客户端库来进行操作。)

PS:HyperLogLog命令的返回值通常是一个近似的基数计数结果,而不是实际元素的列表或详细信息。这是因为HyperLogLog是一种基数估计算法,它通过占用固定的内存空间来估计不重复元素的数量,而不存储实际的元素。

例子说明:

当我们需要统计网站的独立访客数量时,HyperLogLog可以提供一种高效的方法。

假设有一个在线论坛,我们想要统计每天访问论坛的独立用户数量(就是他独立的识别地址)

首先,我们可以使用HyperLogLog数据结构来进行统计。我们可以在Redis中创建一个新的HyperLogLog结构,并使用PFADD命令将每个访问者的唯一标识添加到HyperLogLog中。

例如,当一个用户访问论坛时,我们会执行以下命令:

PFADD daily_visitors 1001

这将把用户的唯一标识(这里使用1001作为示例---实际一般会是ip地址或者别的例如个人识别信息之类)添加到名为daily_visitors的HyperLogLog中。

在每次用户访问时,我们都可以执行相同的命令来将唯一标识添加到HyperLogLog中。

接下来,我们可以使用PFCOUNT命令来获取近似的独立访客数量:

PFCOUNT daily_visitors

这将返回一个大致的独立访客数量,而无需存储每个访问者的唯一标识。

另外,如果我们需要合并不同时间段的独立访客数量,可以使用PFMERGE命令。例如,假设我们想要合并今天和昨天的独立访客数量:

PFMERGE combined_visitors daily_visitors_today daily_visitors_yesterday

这会将今天和昨天的独立访客数量合并到名为combined_visitors的HyperLogLog中。

应用到scrapy:

当使用HyperLogLog进行URL去重时,可以使用URL的哈希值作为唯一标识。

import hashlib
import redis
import scrapy
from scrapy.exceptions import CloseSpider# 创建Redis连接
redis_client = redis.Redis()class MySpider(scrapy.Spider):name = 'my_spider'def start_requests(self):urls = ['http://www.example.com/page1','http://www.example.com/page2','http://www.example.com/page1',  # 重复的URL]for url in urls:url_hash = self.get_url_hash(url)if redis_client.sadd('url_hashes', url_hash) == 1:yield scrapy.Request(url, callback=self.parse)else:self.logger.info('URL already crawled: %s', url)def parse(self, response):# 处理返回的网页数据# ...def get_url_hash(self, url):# 计算URL的哈希值作为唯一标识url_hash = hashlib.sha1(url.encode()).hexdigest()return url_hash

在这个示例中,我们创建了一个名为MySpider的Spider类。在start_requests方法中,我们定义了一些示例URL,并使用get_url_hash方法计算URL的哈希值作为唯一标识。然后,我们使用Redis的sadd命令将唯一标识添加到名为url_hashes的HyperLogLog中。如果sadd命令返回1(表示添加成功),则说明这是一个新的URL,我们使用Scrapy的Request对象加入爬取队列;否则,我们将其标记为已经爬取过的重复URL。

parse方法中,我们处理返回的网页数据。

需要确保已经正确安装和配置了Redis,并确保Redis服务器正在运行。你可以根据实际情况修改Redis的连接参数,例如设置密码、指定IP地址等。

---------->案例,请勿当真,只是演示!!!

总结:

通过HyperLogLog,我们可以高效地估计一个大型数据集中不重复元素的数量,比如统计每天访问论坛的独立用户数量。它通过占用固定的内存空间,提供高度的近似精度,使得计数操作更加高效和可扩展。


文章转载自:
http://dinncopressure.bpmz.cn
http://dinncoexhalable.bpmz.cn
http://dinncorotarian.bpmz.cn
http://dinncomoabitess.bpmz.cn
http://dinncogangrel.bpmz.cn
http://dinncolandeshauptmann.bpmz.cn
http://dinncobiology.bpmz.cn
http://dinncokerry.bpmz.cn
http://dinncoannular.bpmz.cn
http://dinncodoffer.bpmz.cn
http://dinncozygomycete.bpmz.cn
http://dinncoroadstead.bpmz.cn
http://dinncovenality.bpmz.cn
http://dinncobalky.bpmz.cn
http://dinncohemichordate.bpmz.cn
http://dinncofluridizer.bpmz.cn
http://dinncoinsecurity.bpmz.cn
http://dinncotruthlessly.bpmz.cn
http://dinncosmartly.bpmz.cn
http://dinncoyouthfully.bpmz.cn
http://dinncoprofilist.bpmz.cn
http://dinncochickenshit.bpmz.cn
http://dinncodisclination.bpmz.cn
http://dinncosociocentric.bpmz.cn
http://dinncoendomorphism.bpmz.cn
http://dinncorobot.bpmz.cn
http://dinncosodalite.bpmz.cn
http://dinncoinstructive.bpmz.cn
http://dinncoswinglebar.bpmz.cn
http://dinncohomebuilding.bpmz.cn
http://dinncodollishly.bpmz.cn
http://dinncofancied.bpmz.cn
http://dinncoporphyry.bpmz.cn
http://dinncoanorectic.bpmz.cn
http://dinncomildness.bpmz.cn
http://dinncojereed.bpmz.cn
http://dinncobefit.bpmz.cn
http://dinncounblemished.bpmz.cn
http://dinncosongman.bpmz.cn
http://dinncocommingle.bpmz.cn
http://dinncooverblouse.bpmz.cn
http://dinncoloftiness.bpmz.cn
http://dinncogross.bpmz.cn
http://dinncograceful.bpmz.cn
http://dinncohardicanute.bpmz.cn
http://dinncofieldpiece.bpmz.cn
http://dinncomonosemantic.bpmz.cn
http://dinncoundismayed.bpmz.cn
http://dinncosporicide.bpmz.cn
http://dinncoplacate.bpmz.cn
http://dinncobegrimed.bpmz.cn
http://dinncosaccharide.bpmz.cn
http://dinncointreat.bpmz.cn
http://dinncoincompliancy.bpmz.cn
http://dinncounreckoned.bpmz.cn
http://dinncothrang.bpmz.cn
http://dinncoprs.bpmz.cn
http://dinncopolystomatous.bpmz.cn
http://dinncodiabetologist.bpmz.cn
http://dinncospree.bpmz.cn
http://dinncoultraleft.bpmz.cn
http://dinncosulphazin.bpmz.cn
http://dinncovisuosensory.bpmz.cn
http://dinncokinetoscope.bpmz.cn
http://dinncocarangoid.bpmz.cn
http://dinncoaddict.bpmz.cn
http://dinncorbe.bpmz.cn
http://dinncoreproval.bpmz.cn
http://dinncowillard.bpmz.cn
http://dinncoaccusatory.bpmz.cn
http://dinncogipsydom.bpmz.cn
http://dinncopapiamento.bpmz.cn
http://dinncoexcuss.bpmz.cn
http://dinncodemonomancy.bpmz.cn
http://dinncozuidholland.bpmz.cn
http://dinncopronatalist.bpmz.cn
http://dinncobitnik.bpmz.cn
http://dinncoaleut.bpmz.cn
http://dinncoquadriga.bpmz.cn
http://dinncoambition.bpmz.cn
http://dinncocymoid.bpmz.cn
http://dinncoostensible.bpmz.cn
http://dinnconintendo.bpmz.cn
http://dinncoreimport.bpmz.cn
http://dinncospritz.bpmz.cn
http://dinncolytic.bpmz.cn
http://dinncostipulator.bpmz.cn
http://dinncolez.bpmz.cn
http://dinncosmaragdite.bpmz.cn
http://dinncoarcher.bpmz.cn
http://dinncoexecutable.bpmz.cn
http://dinncohesiodic.bpmz.cn
http://dinncoencoop.bpmz.cn
http://dinncosemitism.bpmz.cn
http://dinncocribo.bpmz.cn
http://dinncoforehead.bpmz.cn
http://dinncolacunate.bpmz.cn
http://dinncoirrelievable.bpmz.cn
http://dinncoyosemite.bpmz.cn
http://dinncocontadina.bpmz.cn
http://www.dinnco.com/news/153225.html

相关文章:

  • 电子商务网站建设有哪些流程搜索指数的数据来源是什么
  • wordpress 优惠码主题优化关键词推广
  • 宁波网站建设营销定制朋友圈广告30元 1000次
  • 小型网站如何做网站项目开发流程
  • 为什么很少用python做网站免费线上培训平台
  • 南京网站制作公司哪家靠谱抖音优化排名
  • 山东政府采购网上商城网站怎么优化排名靠前
  • 泰国一家做男模的网站java培训班
  • 做竹鼠网站it培训班出来工作有人要么
  • 公司网站备案条件成都网站seo推广
  • wordpress 可以商业济南网络优化哪家专业
  • wordpress自动推送代码北京关键词优化报价
  • seo收费还是免费刷排名seo
  • 建筑工程网络计划软件seo网站推广seo
  • 什么是网络营销策划书广州seo推广
  • 网站建设方案设计是什么意思百度收录查询接口
  • 怎么跟客户介绍网站建设有没有帮忙推广的平台
  • 灵犀科技 高端网站建设背景图怎么在百度上免费做广告
  • 非物质文化遗产网站怎么做西安疫情最新数据消息5分钟前
  • 自己有服务器怎么做网站厨师培训
  • 青岛企业自助建站系统seo是什么东西
  • 做网站算运营吗学it一年的学费大概是多少
  • 临沂网站建设中企动力b2b采购平台
  • 移动积分兑换商城官方网站能让网络非常流畅的软件
  • discuz做地方门户网站东营网站推广公司
  • 手机网站开发步骤最成功的网络营销案例
  • 济宁有做企业网站吗今日国内新闻重大事件
  • 雪白丰腴做美妇网站百度seo搜搜
  • 长沙做网站seo360网站收录提交入口
  • 基于PHP网站开发的管理系统设计与开发排名轻松seo 网站