Redis 中的高级数据类型
2024-08-21 21:22:55
高级功能
① HyperLogLog (参考)
供不精确的去重计数功能,比较适合用来做大规模数据的去重统计,例如统计 UV
> PFADD visitors alice bob carol
(integer) 1
> PFCOUNT visitors
(integer) 3
解释:
如果 HyperLogLog 估计的近似基数在 PFADD 命令执行之后出现了变化, 那么命令返回 1 , 否则返回 0 。如果命令执行时给定的键不存在, 那么程序将先创建一个空的 HyperLogLog 结构, 然后再执行命令。
PFCOUNT 命令会给出 HyperLogLog 包含的近似基数。在计算出基数后,PFCOUNT 会将值存储在 HyperLogLog 中进行缓存,直到下次 PFADD 执行成功前,就都不需要再次进行基数的计算。
PFMERGE 将多个 HyperLogLog 合并为一个 HyperLogLog , 合并后的 HyperLogLog 的基数接近于所有输入 HyperLogLog 的并集基数。
② pub/sub
使用主题订阅者模式,可以实现 1:N 的消息队列(即生产一次消费多次)。但是,在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如RocketMQ等
# 订阅频道
> SUBSCRIBE redisChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1 # 发布消息到频道
> PUBLISH redisChat "Redis is a great caching technique"
1) "message"
2) "redisChat"
3) "Redis is a great caching technique" # 查看频道列表
> PUBSUB CHANNELS
1) "redisChat" # 取消订阅
> UNSUBSCRIBE redisChat # 订阅多个频道,格式为 PSUBSCRIBE pattern [pattern ...]
> PSUBSCRIBE redis*
1) "psubscribe"
2) "redisChat"
3) (integer) 1
233
最新文章
- C# 给word文档添加水印
- Web Components初探
- dedecms为什么文档标题最大长度只能显示二十个汉字呢?
- Java并发编程学习笔记(一)——线程安全性
- iOS_Swift初识之使用三种回调方式自定义Button
- Git学习笔记(3)——撤销修改和文件的删除
- linux永久更改eth0的ip地址后仍然ping不通过
- Java 性能优化技巧集锦
- Android开发--环境的配置
- QT多线程及通过事件进行通信(通过自定义事件,然后QApplication::postEvent给主界面,我之前用的是信号槽)
- 【MVC】 文件及URL 的整理
- 深入浅出Mybatis-分页
- Android ListView 单条刷新方法实践及原理解析
- 有趣的++i和i++
- django管理数据库之中文字符编码问题
- abaqus 帮助文档 Substructure(子结构) 理论
- HTML5之FileReader文件读取接口
- Android View体系(六)从源码解析Activity的构成
- Nginx PHP支持
- 关于初次使用Linux的一些小经验