WordPress作者信息框/网店seo名词解释

WordPress作者信息框,网店seo名词解释,绵阳网站建设报价,做门户网站需要学什么软件Redis的HyperLogLog(HLL)是一种高效的概率数据结构,也是一种基于字符串的数据结构,用于估计大数据集的唯一元素数量(基数统计)。它通过极低的内存占用(约 12KB)实现接近线性的时间复…

Redis的HyperLogLog(HLL)是一种高效的概率数据结构,也是一种基于字符串的数据结构,用于估计大数据集的唯一元素数量(基数统计)。它通过极低的内存占用(约 12KB)实现接近线性的时间复杂度,适用于海量数据去重计数场景(如统计独立访客数),但需容忍约0.81%的标准误差。

有关hyperloglog类型的命令可以通过help @hyperloglog命令来查看。有关命令的使用可以通过help 命令来查看,例如help pfadd

核心特性

低内存消耗:即使统计上亿甚至几十亿的数量级,每个HyperLogLog键仅占用12KB内存,无论元素数量多少(极端情况下最多占用64KB)。

高效合并:支持多组HyperLogLog的合并去重(PFMERGE),并且复杂度也是O(1),适合分布式统计(如多日数据合并为周/月统计)。

去重能力:自动忽略重复元素,多次添加同一元素不会影响结果。

计算复杂度低:其插入、查询操作的复杂度都是O(1),这使得它在处理大规模数据集时具有非常高的效率。

结果是估计值:虽然HyperLogLog提供的是基数估计值,但误差非常小,标准误差率可以控制在0.81%以内。

命令的使用

PFADD

PFADD:将一个或多个元素添加到HyperLogLog中,用于估算基数。

语法:

PFADD key element [element ...]

使用:

127.0.0.1:6379> pfadd visits:20990101 user1 user2
(integer) 1127.0.0.1:6379> pfadd visits:20990102 user2 user3
(integer) 1

PFCOUNT

PFCOUNT:返回一个或多个HyperLogLog的估算基数。。

语法:

PFCOUNT key [key ...]

使用:

# 统计单日独立用户
127.0.0.1:6379> pfcount visits:20990101
(integer) 2# 合并两日数据
127.0.0.1:6379> pfcount visits:20990101 visits:20990102
(integer) 3

PFMERGE

PFMERGE:将一个或多个HyperLogLog合并到另一个HyperLogLog中,用于合并不同数据集的基数估算。

语法:

PFMERGE destkey sourcekey [sourcekey ...]

使用:

127.0.0.1:6379> pfmerge visits:week visits:20990101 visits:20990102
OK127.0.0.1:6379> pfcount visits:week
(integer) 3

实现原理

在Redis中,HyperLogLog的存储也是个字符串,只不过这个字符串有个固定格式的头部(16字节),包括魔术字符串、编码方式、保留字段、缓存的基数以及数据字节等。

HyperLogLog的工作原理基于概率算法和哈希函数。它对要加入的每个新元素进行哈希处理,哈希值的一部分用于索引寄存器(将原始集合分成多个子集),另一部分用于计算哈希中最长的前导零序列。HyperLogLog根据寄存器数组中的值(这些寄存器被设置为迄今为止针对给定子集观察到的最大连续零),计算出估计的基数,并应用修正公式来纠正估计误差。

具体来说,Redis中HyperLogLog使用64bit的哈希函数,其中14bit用于寄存器索引,剩下的50bit用于计算前导0的个数。Redis中HLL有16384(2^14)个寄存器,其中存的值的范围是0~50。

哈希与二进制转换

每个元素通过哈希函数(如MurmurHash)转换为固定长度(如64位)的二进制串。

作用:哈希保证元素分布均匀,避免数据倾斜导致的统计偏差。

分桶策略(Bucketing)

分桶规则:取哈希值前14位确定桶编号,一共2^14=16384个桶,后50位计算最长前导零数量。

基数估算公式

调和平均数:降低极端值影响,计算所有桶的调和均值 H
H = m ∑ i = 1 m 1 2 k i H = \frac{m}{\sum_{i=1}^{m} \frac{1}{2^{k_i}}} H=i=1m2ki1m

修正系数:最终基数估算值:
E = α ⋅ m ⋅ H E = \alpha \cdot m \cdot H E=αmH

其中 α 为修正系数(如 m=16384α≈0.7213)。

误差控制与优化

标准误差:1.04/√m,Redis实现误差约0.81%

小数据集修正:当估算值 E < 2.5m 时,使用线性计数(Linear Counting)优化结果。

为了节省内存空间,HyperLogLog内部会采用不同的编码方式进行存储:

  • 稀疏编码(默认):应对数据量小的场景。
  • 密集编码:应对数据量大的场景。

适用场景

由于HyperLogLog具有高效存储、概率估计和高速计算等特点,因此它非常适用于以下场景:

  • 基数统计:网站UV统计、统计每日/月的独立访客数。

  • 数据流量分析:例如分析用户在某个时间段内访问的不同页面数、点击不同广告的用户数等。

  • 实时分析:高频事件(如搜索关键词)的去重计数。

  • 大规模日志处理:快速估算日志中唯一IP或错误类型数量。

注意事项

  • 误差范围:标准误差约0.81%,实际误差可能因数据分布略高。

  • 非精确查询:无法获取具体元素或判断元素是否存在。

  • 小数据集优化:Redis在基数较小时使用稀疏存储优化空间。

Java中的使用

package com.morris.redis.demo.hyperloglog;import org.redisson.Redisson;
import org.redisson.api.RHyperLogLog;
import org.redisson.api.RedissonClient;
import org.redisson.client.codec.StringCodec;
import org.redisson.config.Config;import java.util.Arrays;/*** redisson中hyperloglog的使用*/
public class RedissonHyperLogLogDemo {public static void main(String[] args) {// 配置Redisson客户端Config config = new Config();config.useSingleServer().setAddress("redis://127.0.0.1:6379");// 创建Redisson客户端实例RedissonClient redisson = Redisson.create(config);// 创建hyperloglogRHyperLogLog<Object> hyperLogLog1 = redisson.getHyperLogLog("visits:20880101", StringCodec.INSTANCE);hyperLogLog1.add("user1");hyperLogLog1.addAll(Arrays.asList("user2", "user3"));RHyperLogLog<Object> hyperLogLog2 = redisson.getHyperLogLog("visits:20880102", StringCodec.INSTANCE);hyperLogLog2.add("user2");hyperLogLog2.addAll(Arrays.asList("user3", "user4"));System.out.println(hyperLogLog1.count()); // 3System.out.println(hyperLogLog1.countWith("visits:20880102")); // 4RHyperLogLog<Object> hyperLogLogWeek = redisson.getHyperLogLog("visits:week", StringCodec.INSTANCE);hyperLogLogWeek.mergeWith("visits:20880101", "visits:20880102");System.out.println(hyperLogLogWeek.count()); // 4// 关闭客户端redisson.shutdown();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/896387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】第八期——指针、二维数组与字符串

目录 1 初始指针 2 获取变量的地址 3 定义指针变量、取地址、取值 3.1 定义指针变量 3.2 取地址、取值 4 对指针变量进行读写操作 5 指针变量作为函数参数 6 数组与指针 6.1 指针元素指向数组 6.2 指针加减运算&#xff08;了解&#xff09; 6.2.1 指针加减具体数字…

SpringBoot——生成Excel文件

在Springboot以及其他的一些项目中&#xff0c;或许我们可能需要将数据查询出来进行生成Excel文件进行数据的展示&#xff0c;或者用于进行邮箱发送进行附件添加 依赖引入 此处demo使用maven依赖进行使用 <dependency><groupId>org.apache.poi</groupId>&…

LLC谐振变换器恒压恒流双竞争闭环simulink仿真

1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2017Ra&#xff09;软件。建议采用matlab2017 Ra及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09;针对全桥LLC拓扑&#xff0c;利用Matlab软件搭建模型&#xff0c;分别对轻载&#xf…

Discourse 中集成 Claude 3.7 Sonnet 模型

如果 Discourse 实例已经接入了 Anthropic。 那么只需要在后台挑一个不希望继续使用的模型改下就好。 否则需要重新在 Discourse 实例中配置 AI&#xff0c;然后获得 Anthropic 的 key。 进入后台的 AI 然后选择 LLMs 虽然我们这里已经显示成 3.7 了&#xff0c;但实际上所有…

Oracle 12c Docker安装问题排查 sga_target 1536M is too small

一、问题描述 在虚拟机环境&#xff08;4核16GB内存&#xff09;上部署 truevoly/oracle-12c 容器镜像时&#xff0c;一切运行正常。然而&#xff0c;当在一台 128 核 CPU 和 512GB 内存的物理服务器上运行时&#xff0c;容器启动时出现了 ORA-00821 等错误&#xff0c;提示 S…

DeepSeek 提示词:高效的提示词设计

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

KIMI K1.5:大规模强化学习在大语言模型中的应用与工程实践

目录 1、核心技术创新:长上下文强化学习 2、策略优化的技术细节 2.1、在线镜像下降变体 2.2、长度惩罚机制 2.3、智能采样策略 3、工程架构创新 3.1、混合部署框架 3.2、代码沙箱与奖励模型 3.3、分布式系统架构 4、实验成果与性能提升 5、结论与未来展望 大语言模…

HDFS数据多目录、异构存储、回收站

1.NameNode元数据多目录 HDFS集群中可以在hdfs-site.xml中配置“dfs.namenode.name.dir”属性来指定NameNode存储数据的目录&#xff0c;默认NameNode数据存储在${hadoop.tmp.dir}/dfs/name目录&#xff0c;“hadoop.tmp.dir”配置项在core-site.xml中。 我们也可以将NameNod…

TFChat:腾讯大模型知识引擎(DeepSeek R1)+飞书机器人实现AI智能助手

效果 TFChat项目地址 https://github.com/fish2018/TFChat 腾讯大模型知识引擎用的是DeepSeek R1&#xff0c;项目为sanic和redis实现&#xff0c;利用httpx异步处理流式响应&#xff0c;同时使用buffer来避免频繁调用飞书接口更新卡片的网络耗时。为了进一步减少网络IO消耗&…

布署elfk-准备工作

建议申请5台机器部署elfk&#xff1a; filebeat(每台app)--> logstash(2台keepalived)--> elasticsearch(3台)--> kibana(部署es上)采集输出 处理转发 分布式存储 展示 ELK中文社区: 搜索客&#xff0c;搜索人自己的社区 官方…

DeepSeek:我的AI助手之旅

★【前言】: 初次使用AI助手帮我写作,就像摸石头过河一样,一点点的前行。我在慢慢的摸索,慢慢的体会中,感悟出的一点个人心得体会现分享给大家。这也说明一个问题,网站上各种使用方法和技巧是对于已经使用过的人来说的方便和快捷,但对于刚刚接触的使用者来说,网上的各…

esp8266 rtos sdk开发环境搭建

1. 安装必要的工具 1.1 安装 Git Git 用于从远程仓库克隆代码&#xff0c;你可以从Git 官方网站下载 Windows 版本的安装程序。安装过程中可保持默认设置&#xff0c;安装完成后&#xff0c;在命令提示符&#xff08;CMD&#xff09;或 PowerShell 中输入git --version&#…

C# | GDI+图像测距辅助线的实现思路

C# | GDI图像测距辅助线的实现思路 文章目录 C# | GDI图像测距辅助线的实现思路一、辅助线需求概述二、坐标系与角度计算2.1 笛卡尔坐标系2.2 线长和角度计算方法2.3 文本角度矫正计算方法2.4 坐标变换实现步骤 三、与if判断方式对比四、总结 一、辅助线需求概述 在图像测量工…

记录此刻:历时两月,初步实现基于FPGA的NVMe SSD固态硬盘存储控制器设计!

背景 为满足实验室横向项目需求&#xff0c;在2024年12月中下旬导师提出基于FPGA的NVMe SSD控制器研发项目。项目核心目标为&#xff1a;通过PCIe 3.0 x4接口实现单盘3000MB/s的持续读取速率。 实现过程 调研 花了半个月的时间查阅了一些使用FPGA实现NVME SSD控制器的论文、…

python编写liunx服务器登陆自动巡检脚本

前言&#xff1a; 用户需要一份用Python编写的Linux系统巡检脚本&#xff0c;检查内存、磁盘、CPU使用率&#xff0c;还有网络连通性。 首先&#xff0c;我得确定用户的使用场景。可能用户是系统管理员&#xff0c;需要定期监控服务器状态&#xff0c;确保系统正常运行。 或者…

springboot015基于SpringBoot的在线视频教育平台的设计与实现(源码+数据库+文档)

源码地址&#xff1a;基于SpringBoot的在线视频教育平台的设计与实现 文章目录 1.项目简介2.部分数据库结构与测试用例3.系统功能结构4.包含的文件列表&#xff08;含论文&#xff09;前端运行截图后端运行截图 1.项目简介 ​ 随着科学技术的飞速发展&#xff0c;各行各业都在…

可以免费无限次下载PPT的网站

前言 最近发现了一个超实用的网站&#xff0c;想分享给大家。 在学习和工作的过程中&#xff0c;想必做PPT是一件让大家都很头疼的一件事。 想下载一些PPT模板减少做PPT的工作量&#xff0c;但网上大多精美的PPT都是需要付费才能下载使用。 即使免费也有次数限制&#xff0…

Android OpenGLES2.0开发(十一):渲染YUV

人生如逆旅&#xff0c;我亦是行人 Android OpenGLES开发&#xff1a;EGL环境搭建Android OpenGLES2.0开发&#xff08;一&#xff09;&#xff1a;艰难的开始Android OpenGLES2.0开发&#xff08;二&#xff09;&#xff1a;环境搭建Android OpenGLES2.0开发&#xff08;三&am…

日语Learn、英语的再认识

背单词这件事感觉到了某个瓶颈了&#xff0c;没有什么新的区域可以发现&#xff0c;变成了一种类似纯粹的机械记忆&#xff0c;感觉英语的规范程度很低&#xff0c;很多词明明可以通过相近的形式变换&#xff0c;达到更好的学习效果&#xff0c;但却做的很麻烦&#xff0c;同一…