Redis指令详解-HLL相关指令

目录

目标

HLL数据结构

    举例:近似统计唯一的search query

     统计UV

PFADD

PFCOUNT

PFMERGE


目标

列举redis中与HLL(近似基数统计)相关的指令,包括作用、使用时需要注意的地方等。

HLL数据结构

    使用小的常量内存空间(12KB,特定编码的特定长度的String),去近似统计集合中唯一元素的数量
    近似值误差0.81%

    举例:近似统计唯一的search query

  • 每次search query,使用PFADD key searchQuery的URL
  • 随时使用PFCOUNT获取唯一query的近似值

     统计UV

PFADD

    PFADD key [element ...]
    O(N) N:参数中ele个数
    向HLL数据结构中添加元素,HLL内部可能发生更新,以便表现唯一元素个数的变换
    如果key不存在,则新建一个empty HLL;如果HLL内部寄存器发生变化,返回1;否则返回0;

PFCOUNT

    PFCOUNT key [key ...]
    O(N) N:请求key的数量
    获取唯一元素的近似数量
    返回
        参数是单个key时,如果key存在,返回基数估算值;否则0
        参数是多个key,内部将多个HLL merge后,返回基数估算的值
    注意
        执行该命令后,HLL结构可能发生变化,因为最后8个byte编码存储最近的统计结果,达到cache目的。所以PFCOUNT可以理解为是个写命令。
    举例

pfadd hll1 a b c d
"1"
pfcount hll1
"4"
pfadd hll1 a e f
"1"
pfcount hll1
"6"
pfadd hll2 a b c d
"1"
pfcount hll2
"4"
pfcount hll1 hll2 //新进行merge,然后返回
"6"


    性能差异
        单个KEY时,性能很好。虽然稠密HLL的理论时间较长,但PFCOUNT会使用cache。
        多个KEY时,将进行内部merge,而且估算值无法被cache,所以耗时数毫秒。

PFMERGE

    PFMERGE destkey sourcekey [sourcekey ...]
    O(N) N:HLL的数量
    将多个HLL合并存储到另一个HLL,如果目标key不存在,则创建。
    返回OK

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值