Redis 中的高级数据类型
高级功能
① 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