redis-opsForHyperLogLog-PFADD 用户访问量统计

1、HyperLogLog数据类型介绍

HyperLogLog是redis 的一种特殊数据类型,是基数统计的算法!
A{1 3 5 7 8 7} B{1 3 5 7 8 }
基数(不重复的元素)=5 ,可接受误差!
优点:占用内存是固定的,2^64不同元素的技术,只需要费12KB内存!如果从内存角度来比较的话 HyperLogLog首选!

2、业务:统计每个商品的用户访问量

  public Long statisticsPvNum(Long userId,Long id) {
            //存入key
            redisTep.opsForHyperLogLog().add("pv_num" + id, userId + "-" + id);
            //统计访问量
            Long num = redisTep.opsForHyperLogLog().size("pv_num" + id);
            return num;
    }

redis 事务

public Long statisticsPvNum(Long userId,Long id) {
        redisTep.setEnableTransactionSupport(true);//开启事务支持
        Long num;
        redisTep.multi();//开启事务
        try {
            redisTep.opsForValue().set("111","111");
            redisTep.opsForValue().set("222","222");
            redisTep.opsForValue().set("222","222");
            redisTep.exec();//执行事务 (把前面2条语句放进队列)在这里执行
            return num;
        } catch (Exception e) {
            redisTep.discard();//放弃事务
            System.out.println(e);
        } finally {
            RedisConnectionUtils.unbindConnection(redisTep.getConnectionFactory());//关闭连接
        }

        return null;
    }

3、PFADD、PFCOUNT 操作
在这里插入图片描述
PFADD命令在同一个key中只会添加不同的value进去,相同的数据则不会被添加进去。
PFCOUNT命令在同一个key中只会只会计算不同的value元素数量。
4、总结
在这里插入图片描述
为了节约内存,存入的用户id+商品id并不会展示出来,不管存入多少数据,都是一个HYLL,它只会对存入的数据进行统计;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值