• redis我记不住的那些命令(八)


    背景:我记不住那么多命令,又是Linux命令,又是Git命令,又是kubernetes的命令,又是maven命令,又是redis命令。所谓好记性不如烂笔头,记下来吧。

    一、发布publish/订阅subscribe

    发布/订阅的实现过于简单,因为它只是分发消息,无法记录历史消息,例如网络断开、Redis宕机等消息就会丢弃,而在Redis5.0 新增了一个Redis Stream的数据结构,主要用于消息队列(MQ,message queue),它提供了消息的持久化和主备复制功能。

    1.  publish:向给定频道发送消息

    2.  subscribe:订阅给定的一个或多个频道

    3.  unsubscribe:退订给定的一个或多个频道,如果执行时没有给定任何频道,则退订所有频道

    4.  psubscribe:订阅给定的与pattern相匹配的频道

    5.  punsubscribe:退订给定的与pattern相匹配的频道,如果执行时没有给定任何频道,则退订所有频道

    1. # 1.  subscribe:订阅给定的一个或多个频道
    2. 127.0.0.1:6379> subscribe mychannel
    3. subscribe
    4. mychannel
    5. 1
    6. # 2.  publish:向给定频道发送消息
    7. # 再另外启动一个shell连接redis并执行下列命令
    8. 127.0.0.1:6379> publish mychannel "hello,world"
    9. 1
    10. # 返回前一个shell窗口,则显示
    11. 127.0.0.1:6379> subscribe mychannel
    12. subscribe
    13. mychannel
    14. 1
    15. message
    16. mychannel
    17. hello,world
    18. # 3.  unsubscribe:退订给定的一个或多个频道,如果执行时没有给定任何频道,则退订所有频道
    19. 127.0.0.1:6379> unsubscribe mychannel
    20. # 4.  psubscribe:订阅给定的与pattern相匹配的频道
    21. # 5.  punsubscribe:退订给定的与pattern相匹配的频道,如果执行时没有给定任何频道,则退订所有频道

    二、Hyperloglog

    1. pfadd : 添加元素到hyperloglog中

    2. pfcount:获取hyperloglog中的基数的估算值

    3. pfmerge:将多个hyperloglog合并为一个hyperloglog

    pf代表是这个数据结构的发明人Philippe Flajolet

    hyperloglog可以用于统计一个网站的pv(unique view),也可以使用set来进行统计,这两个数据结构都有自动去重的功能。hyperloglog所占空间较小只需12KB内存即可,实现原理这里不详细展开。

    如果使用set,当一个请求来了后sadd将用户id或ip地址放进去,并由scard统计数量即可,但是当一个页面有几千万的uv,这个很大的set集合就比较浪费空间。所以就引出了hyperloglog,它提供不精确的去重统计方案,标准误差在0.81%,可以满足上述UV统计。

    用法与set相似,pfadd类似于sadd,pfcount类似于scard。

    1. # 1. pfadd : 添加元素到hyperloglog中
    2. 127.0.0.1:6379> pfadd myUV xiaoming
    3. 1
    4. 127.0.0.1:6379> pfadd myUV lihua
    5. 1
    6. 127.0.0.1:6379> pfadd myUV zhanghong
    7. 1
    8. 127.0.0.1:6379> pfadd youUV xiaoming
    9. 1
    10. 127.0.0.1:6379> pfadd youUV lihua
    11. 1
    12. 127.0.0.1:6379> pfadd youUV liuwei
    13. 1
    14. # 2. pfcount:获取hyperloglog中的基数的估算值
    15. 127.0.0.1:6379> pfcount myUV
    16. 3
    17. 127.0.0.1:6379> pfcount youUV
    18. 3
    19. # 3. pfmerge:将多个hyperloglog合并为一个hyperloglog
    20. 127.0.0.1:6379> pfmerge threeUV myUV youUV
    21. OK
    22. 127.0.0.1:6379> pfcount threeUV
    23. 4

  • 相关阅读:
    Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):5、Maven版本发布与后续版本更新(大结局)
    【SwiftUI模块】0032、SwiftUI搭建一个类似抖音评论模块的半页模式 - 底部抽屉
    代码随想录二刷 | 数组 | 二分查找
    『手撕Vue-CLI』添加自定义指令
    Ubuntu18.04系统安装并配置redis
    MySQL的下载、安装、配置
    VLDB‘22 HiEngine极致RTO论文解读
    Redis Twemproxy 集群规范部署手册
    半导体行业如何在跨网数据交换时保证核心数据是安全的?
    udev 挂载SD卡 USB设备
  • 原文地址:https://blog.csdn.net/u010566813/article/details/128197252