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

凡科建站官网地址企业门户样式

凡科建站官网地址,企业门户样式,系统开发步骤,手机行情网报价实时查询前言: 继续之前的 向爬虫而生---Redis 基石篇5 #xff1c;拓展Zset#xff1e;-CSDN博客 一些比较基础的redis类型在初中级阶段用着没有毛病,但是到了大数据时代,慢慢一些更高级的场景,就需要把这几个类型搬出来了! 正文: 概念: 当我们需要对一个大型数据集进行去重计…前言: 继续之前的 向爬虫而生---Redis 基石篇5 拓展Zset-CSDN博客 一些比较基础的redis类型在初中级阶段用着没有毛病,但是到了大数据时代,慢慢一些更高级的场景,就需要把这几个类型搬出来了! 正文: 概念: 当我们需要对一个大型数据集进行去重计数时传统的集合或者基数计数方法可能会面临内存消耗较大的问题。这时Redis的HyperLogLogHLL数据结构就可以派上用场了。 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_spiderdef 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, callbackself.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://www.hkea.cn/news/14584713/

相关文章:

  • 网站开发ceac证深圳团购网站设计价格
  • 湛江建设局网站wordpress打包ios app
  • 网站建设完成以后应该怎样备份开一家网站建设公司
  • 开网站 怎么做网上支付sem和seo是什么意思
  • 校园网站平台建设企业数字展厅
  • 网站建设存在的问题建站做得好的公司
  • 老山网站建设怎样做商城手机网站
  • 如何更改网站标签logo源码搭建app教程
  • 国外做meta分析的网站wordpress插件使用方法
  • 知名的设计公司网站帮忙做简历的网站
  • eclipse的开发网站开发海宁网站开发
  • 温州网站制作建设做汽车网站开题报告的意义
  • 桂林网站推广西安网站seo服务
  • 个人备案域名做企业网站ui设计的优势与不足
  • 自己做的网站可以发布吗WordPress文章拷贝
  • 沈阳论坛建站模板宣传册排版
  • 重庆网站建设网页设计购物网站建设的必要性
  • 体育网站建设的必要性网站有什么到期
  • 手机网站标准字体大小局域网电脑做网站服务器
  • 租用服务器一般是谁帮助维护网站安全销售管理软件属于
  • 宁波专业seo推广价格购物网站seo关键词定位
  • 电子商务网站开发前景统计网站建设
  • 网站系统建设支出分录灰色调网站
  • 娄底建设公司网站如何用自己电脑做销售网站
  • 县城做网站的多么第一推是谁做的网站
  • 大型网站改版扬州做网站多少钱
  • 印刷网站 源码做海外网站交税吗
  • 北京网站建设亿玛酷适合5手机项目工作室
  • 宁夏建设厅官方网站重庆品牌网站建设
  • 学校网站建设方案及报价高端的镇江网站建设