Redis HyperLogLog与事务和Redis 7.0
2023-05-06 17:59:52 4 举报
AI智能生成
Redis HyperLogLog与事务和Redis 7.0
作者其他创作
大纲/内容
事务
命令使用
multi(代表事务开始,开始后执行的命令都存放在缓存队列中)
exec(代表事务结束,执行队列中的命令)
discard(丢弃缓存队列中的未执行命令)
watch(在事务之前执行,确保事务中的 key 没有被
其他客户端修改过,才执行事务,否则不执行,类似乐观锁)
其他客户端修改过,才执行事务,否则不执行,类似乐观锁)
Pipeline 和事务的区别和联系
行为对象不同,pipeline为客户端行为,
事务是服务器行为。服务器无法识别pipeline
事务是服务器行为。服务器无法识别pipeline
应用 pipeline 可以提服务器的吞吐能力,
并提高 Redis 处理查询请求的能力
并提高 Redis 处理查询请求的能力
可以将事务和 pipeline 结合起来使用,减少事务的命
令在网络上的传输时间,将多次网络 IO 缩减为一次网络 IO
令在网络上的传输时间,将多次网络 IO 缩减为一次网络 IO
HyperLogLog
pv(页面访问量)和uv(用户访问量)
使用命令
pfadd
示例:pfadd key element [element …]
pfadd 用于向 HyperLogLog 添加元素,如果添加成功返回 1
pfadd 用于向 HyperLogLog 添加元素,如果添加成功返回 1
pfcount
示例:pfcount key [key …]
pfcount 用于计算一个或多个 HyperLogLog 的独立总数
pfcount 用于计算一个或多个 HyperLogLog 的独立总数
pfmerge
示例:pfmerge destkey sourcekey [sourcekey ... ]
pfmerge 可以求出多个 HyperLogLog 的并集并赋值给 destkey
pfmerge 可以求出多个 HyperLogLog 的并集并赋值给 destkey
常用的基数计数的概率算法
Linear Counting(LC):早期的基数估计算法,LC 在空间复杂度方面并不算优
秀
秀
LogLog Counting(LLC):LogLog Counting 相比于 LC 更加节省内存,空间复杂
度更低
度更低
HyperLogLog Counting(HLL):HyperLogLog Counting 是基于 LLC 的优化和改进,
在同样空间复杂度情况下,能够比 LLC 的基数估计误差更小
在同样空间复杂度情况下,能够比 LLC 的基数估计误差更小
原理
伯努利试验
分桶优化
redis中的HyperLogLog实现
0 条评论
下一页