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