zoukankan      html  css  js  c++  java
  • redis:HyperLogLog&发布订阅(HyperLogLog的概念和命令、redis的发布订阅)

    1、概念

    (1)概念

    • 用来做基数统计的算法,在输入的元素的数量或者体积非常大的时候,计算基数所需的空间总是固定的,并且是很小的
    • 每一个HyperLogLog只需要花费12KB的内存就可以计算接近2的64次方不同元素的基数
    • 因为HyperLogLog只会根据输入的元素来计算基数,而不会存储输入元素本身,所以,HyperLogLog不能像集合那样,返回输入的各个元素
    • 基数不存在重复的元素,例如:{1,3,4,5,6,6,7,8,9,9}的基数集为{1,3,4,5,6,7,8,9},基数为5,基数估计就是在误差可接受的范围内快速计算基数,但是该误差是在误差允许的范围内

    (2)应用

    • 基数不大、数据量不到的时候就没必要用基数
    • 只能统计基数数量,不能获取具体内容,即:不能存储数据
    • 统计每一个用户点击博客的次数,只会计数一次,点击完第一次后,不会再随点击次数的增加而增加访问量

    2、HyperLogLog命令

    (1)添加指定元素到HyperLogLog中

    127.0.0.1:6379> pfadd p1 1 2 3 4 5 6 7  8 9 10 12 22 3 3 455 76 7 788 
    (integer) 1

    (2)返回HyperLogLog的基数估计值

    127.0.0.1:6379> pfadd p1 1 2 3 4 5 6 7  8 9 10 12 22 3 3 455 76 7 788 
    (integer) 1
    127.0.0.1:6379> pfcount p1
    (integer) 15

    祛除重复的元素,一共有15个不重复的元素

    (3)合并

    127.0.0.1:6379> pfadd p1 1 2 3 4 5 6 7  8 9 10 12 22 3 3 455 76 7 788 
    (integer) 1
    127.0.0.1:6379> pfcount p1
    (integer) 15
    127.0.0.1:6379> pfadd p2 1 2 3 4 5 6 7 8 9 10
    (integer) 1
    127.0.0.1:6379> pfmerge p4 p2 p1
    OK
    127.0.0.1:6379> pfcount p4
    (integer) 15

    将p1和p2的基数集合并为p4基数集,并求出p4的基数

    3、Redius发布的订阅

    (1)概念

    redis的发布订阅是一种消息通讯模式,发布者发送消息,接收者接收消息

    redis客户端可以订阅任意数量的频道

    (2)应用

    关注公众号、微博等,关注后发送消息能够及时接收。

    (3)命令

    先开启两个窗口

    利用一个窗口订阅频道cctv1,但是未接收到消息,一直处于线程阻塞状态

    127.0.0.1:6379> subscribe cctv1
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "cctv1"
    3) (integer) 1

    在另一个窗口发布消息:

    127.0.0.1:6379> publish cctv1 nihao
    (integer) 1

    在发布的同时,另一个窗口接受到了该窗口发布的消息:

    127.0.0.1:6379> subscribe cctv1
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "cctv1"
    3) (integer) 1
    1) "message"
    2) "cctv1"
    3) "nihao"

    取消订阅的命令:

    127.0.0.1:6379> unsubscribe cctv1
    1) "unsubscribe"
    2) "cctv1"
    3) (integer) 0
  • 相关阅读:
    "bs".endsWith()的使用注意,别用错了
    国外测试专家BLOG地址
    手机测试地址
    校验日期格式{YYYYMM_DD的java代码
    汉字的字节计算情况不同
    AssertThat汇集
    maven常见仓库
    取消冒泡事件
    好看的绿色阴影按钮
    IComparer 继承接口排序 实例 可选择排序
  • 原文地址:https://www.cnblogs.com/zhai1997/p/13287295.html
Copyright © 2011-2022 走看看