it编程 > 数据库 > Redis

Redis统计访问量的3种实现方式

9人参与 2025-06-10 Redis

一、你是否遇到过这些统计难题?

这些问题,redis的3种核心方案能帮你解决!

二、方案一:hash结构实时统计

适用场景:

核心代码:

# 场景:记录用户访问时间戳(防重复计数)
pipeline.hset("user:visits:202310", user_id, time.time())
pipeline.expire("user:visits:202310", 86400)  # 每天清理一次

# 统计当前活跃用户数
current_uv = redis.hlen("user:visits:202310")

参数说明:

内存优化技巧:

三、方案二:bitmap统计独立访客

适用场景:

核心代码:

# 场景:统计本月访问过的用户(假设用户id为整数)
user_id = 123456
redis.setbit("uv:202310", user_id, 1)

# 获取本月uv总数
total_uv = redis.bitcount("uv:202310")

参数说明:

内存对比:

方法

100万用户内存占用

精度

hash

~100mb

100%

bitmap~125kb100%

四、方案三:hyperloglog估算uv

适用场景:

核心代码:

# 场景:统计全站日活(误差率0.5%)  
redis.pfadd("uv:202310", user_id)
estimated_uv = redis.pfcount("uv:202310")

参数说明:

性能对比:

方法

1000万用户内存

统计误差

bitmap

1.25mb

0%

hyperloglog<1kb0.5%

五、实战选择指南

对比表格:

方案

内存占用

精度

适用场景

hash

中(mb级)

100%

小规模精确统计

bitmap极低(kb级)

100%

大规模精确去重

hyperloglog超低(kb级)

<1%

超大规模近似统计

优化建议:

六、总结

redis统计访问量的本质是内存优化+算法选型的平衡。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

您想发表意见!!点此发布评论

推荐阅读

Redis定时监控与数据处理的实践指南

06-10

Redis过期删除机制与内存淘汰策略的解析指南

06-10

Redis之ZipList压缩列表的使用

06-11

Redis底层数据结构之字典(Dict)的实现

06-06

RedisTemplate默认序列化方式显示中文乱码的解决

06-06

Rsync将一台主Web服务器上的文件和目录同步到另一台备份服务器(最新推荐)

06-05

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论