讲师中心 微信公众号
AI工具推荐 视频效率加速

Redis怎样实现全站独立IP查询_通过每日HyperLogLog记录IP基数

落涛同学_2673

落涛同学_2673

发布时间:2026-03-27 11:46:01

|

550人浏览过

|

来源于php中文网

原创

适合,HyperLogLog是Redis官方推荐的每日独立IP统计方案,误差率约0.81%,内存恒为12KB,支持PFMERGE跨日去重合并,但需注意IP标准化、key分天命名、时区统一及TTL清理等生产细节。

redis怎样实现全站独立ip查询_通过每日hyperloglog记录ip基数

HyperLogLog 适合统计每日独立 IP 数量吗

适合,而且是 Redis 官方推荐场景。HyperLogLog 的误差率约 0.81%,内存固定只需 12 KB,无论你存 1 万还是 1 亿个 IP,都用这点内存。它不存原始数据,只存概率指纹,所以不能查“哪些 IP 来过”,只能回答“大概多少个不同 IP 来过”。

常见错误现象:PFADD daily:ip:2024-06-15 192.168.1.100 后立刻 PFCOUNT daily:ip:2024-06-15 返回 0 —— 多半是客户端没刷新连接或命令发错库;也可能是用了 Redis Cluster 但 key 没带 {...} 前缀导致路由到不同节点。

  • 每天必须用独立 key,比如 daily:ip:2024-06-15,别用 daily:ip 累加,否则无法回溯某天数据
  • IP 字符串建议标准化:IPv4 去掉前导零(192.168.001.001 → 192.168.1.1),IPv6 统一转小写并压缩(2001:DB8::1)
  • 不要对同一个 IP 频繁重复 PFADD,虽然幂等,但会增加网络开销;业务层可先做简单布隆过滤或本地缓存去重

如何合并多日的独立 IP 总数(去重后)

不能直接加总 PFCOUNT 结果——那只是各日基数之和,不是跨日去重总数。得用 PFMERGE 把多个 HyperLogLog 合成一个临时结构再统计。

使用场景:算“近 7 天全站独立访客数”,或对比“上周 vs 本周活跃度”。

示例:

PFMERGE weekly:ip:2024-06-09-15 daily:ip:2024-06-09 daily:ip:2024-06-10 ... daily:ip:2024-06-15
PFCOUNT weekly:ip:2024-06-09-15
  • PFMERGE 是原子操作,但目标 key 若已存在,会覆盖原有值;建议加时间戳后缀避免冲突,如 weekly:ip:2024-06-09-15:tmp123
  • 合并超过 100 个 key 时,Redis 可能阻塞较久(毫秒级),线上慎在高峰时段批量执行;可拆成每 20 个一组分批 merge
  • 注意内存:merge 后的结构仍只占约 12 KB,但临时 key 不删会累积——记得用 DEL 清理,或设 EXPIRE

为什么不用 Set 存原始 IP

因为太贵。100 万独立 IP 存 Set,至少占 100+ MB 内存(每个字符串额外有 dict 开销),而 HyperLogLog 只要 12 KB。更关键的是,SCARD 虽准确,但 SADD 在大数据量下延迟波动大,且无法高效做跨日去重统计(SUNIONSTORE 会阻塞、爆内存)。

  • 如果你需要“查某个 IP 是否在某天出现过”,Set 或 Sorted Set 更合适,但那是另一个需求,和“基数统计”不互斥
  • 有些团队用 Lua 脚本把 IP 哈希后存到 bitset(如 SETBIT),看似省内存,但碰撞率难控、扩容麻烦,不如直接信 HyperLogLog 的工程实现
  • 别为了“绝对精确”强行用 Set + SCARD —— 除非你明确知道误差 0.81% 会导致商业决策错误,否则这是典型的过早优化

生产环境容易漏掉的关键细节

IP 来源不可靠、时间粒度错位、key 生命周期混乱,这三处出问题比算法本身更常见。

  • 反向代理(Nginx / CDN)没透传真实 X-Forwarded-For,导致所有请求都记成同一个内网 IP;务必在接入层统一提取并清洗 remote_addr 或头字段
  • 按天切分 key,但业务服务器时区不一致,或日志落盘延迟,导致同一天的请求被写进两个日期 key;建议统一用 UTC 时间生成 key,并校准所有服务时钟
  • 没设过期策略,daily:ip:2023-01-01 这种 key 永远留在内存里;用 EXPIRE 设 90 天 TTL,或定期用 SCAN + DEL 清理旧 key

真正卡住人的,往往不是 HyperLogLog 怎么用,而是 IP 怎么取、时间怎么对、key 怎么管——这些事不落地,再准的算法也没意义。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

423

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

4047

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

6905

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

601

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1516

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3978

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

122

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

557

2026.01.13

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

20

2026.11.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn