redis我记不住的那些命令(八)
创始人
2024-04-19 12:05:21
0

背景:我记不住那么多命令,又是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.  subscribe:订阅给定的一个或多个频道
127.0.0.1:6379> subscribe mychannel
subscribe
mychannel
1# 2.  publish:向给定频道发送消息
# 再另外启动一个shell连接redis并执行下列命令
127.0.0.1:6379> publish mychannel "hello,world"
1# 返回前一个shell窗口,则显示
127.0.0.1:6379> subscribe mychannel
subscribe
mychannel
1
message
mychannel
hello,world# 3.  unsubscribe:退订给定的一个或多个频道,如果执行时没有给定任何频道,则退订所有频道
127.0.0.1:6379> unsubscribe mychannel# 4.  psubscribe:订阅给定的与pattern相匹配的频道
略# 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. pfadd : 添加元素到hyperloglog中
127.0.0.1:6379> pfadd myUV xiaoming
1
127.0.0.1:6379> pfadd myUV lihua
1
127.0.0.1:6379> pfadd myUV zhanghong
1127.0.0.1:6379> pfadd youUV xiaoming
1
127.0.0.1:6379> pfadd youUV lihua
1
127.0.0.1:6379> pfadd youUV liuwei
1
# 2. pfcount:获取hyperloglog中的基数的估算值
127.0.0.1:6379> pfcount myUV
3
127.0.0.1:6379> pfcount youUV
3# 3. pfmerge:将多个hyperloglog合并为一个hyperloglog
127.0.0.1:6379> pfmerge threeUV myUV youUV
OK
127.0.0.1:6379> pfcount threeUV
4

相关内容

热门资讯

常规补充订单平台有什么功能 补充订单能够快速提升商品的排名以及曝光,增加店铺转化率。对此,官方严厉打...
信息化与数字化 一、概述 数字化是近年来非常热门的一个词,大家都在说,也都在做ÿ...
ansible作业(四) 题目 1、如果当前受管主机的根分区容量大于1G,则安装httpd和mariadb-se...
DolphinDB 流计算在物... 工业物联网领域,能否对从传感器采集到的包括湿度、温度、压力、液位、流速等多方面的海量数...
案例:如何应对因网络参数导致的... 在苍茫的性能分析道路上,不管你是一只多老的鸟,在经历了多个性能测试的项目之后,你都会发现对于性能问题...
2023北京老博会/北京养老展... CBIAIE北京老博会|以高效的招商速度,深度开拓买家市场,给与亿万老年...
A套需求说明 实验配置:点击跳转 组网需求: 总部网络由两台路由器r1 r2和三台交换...
Vue.js 组件 - 自定义... 一、自定义事件作用 父组件是使用 props 传递数据给子组件,但如果子组件要把数据传...
自动深度学习auto-pyto... 安装 实测window安装不了,自己捣鼓了半天终于要成功时,报了个错 ...
我的世界Bukkit服务器插件... 十二、注册、监听事件与附魔 1.事件 1.1.注册事件 先新建一个类,这里我取名为...