Redis实战案例27-UV统计

1. Redis的HyperLogLog的统计功能


示例:

表明HyperLogLog不管加入重复元素多少次都不会让count++,不会计数重复元素,所以适合做UV计数

2. 简单实现UV测试

通过单元测试,向 HyperLogLog 中添加 100 万条数据,看看内存占用和统计效果如何

java 复制代码
/**
 * UV统计测试
 */
@Test
void testHyperLogLog() {
    String[] values = new String[1000];
    int j = 0;
    //分批·每次一千导入到Redis中
    for (int i = 0; i < 1000000; i++) {
        j = i % 1000;
        values[j] = "user_" + i;
        if(j == 999) {
            // 发送到Redis中
            stringRedisTemplate.opsForHyperLogLog().add("hl1", values);
        }
    }
    // 统计数量
    Long count = stringRedisTemplate.opsForHyperLogLog().size("hl1");
    System.out.println("count = " + count);
}

插入了一百万条,最后得到的是997573条,符合概率预期

再次查看内存消耗

相关推荐
qq_318121593 小时前
互联网大厂Java面试故事:从Spring Boot到微服务架构的技术挑战与解答
java·spring boot·redis·spring cloud·微服务·面试·内容社区
Mr__Miss3 小时前
保持redis和数据库一致性(双写一致性)
数据库·redis·spring
Chan168 小时前
场景题:CPU 100% 问题怎么排查?
java·数据库·redis·后端·spring
v***59839 小时前
springBoot连接远程Redis连接失败(已解决)
spring boot·redis·后端
初次攀爬者9 小时前
SpringBoot 整合 JWT + Redis 实现登录鉴权
java·redis·后端
小飞Coding9 小时前
Redis Cluster 实现多key事务操作
redis
萧曵 丶10 小时前
Redis 是单线程的吗?
数据库·redis
Codeking__10 小时前
Redis的value类型介绍——set
数据库·redis·缓存
qq_3181215910 小时前
Java大厂面试故事:Spring Boot、微服务与AI场景深度解析
java·spring boot·redis·微服务·ai·kafka·spring security
小飞Coding11 小时前
为什么 Redis 的 Pipeline 不是原子的,而 Lua 脚本却是?——从事件循环讲透原子性本质
redis