【无标题】
作者:互联网
【时间】2021.11.24
【题目】【《Redis深度历险》读书笔记(4)】应用(1-4)分布式锁、延时队列、位图、HyperLogLog
本栏目是《Redis深度历险:核心原理和应用实践》的读书笔记。
目录
一、简介
本章主要主要介绍了Redis 分布式锁、延时队列、位图、HyperLogLog的应用。
- 分布式锁:使用setnx+expire实现悲观锁,更进一步,使用set key true ex 100 nx实现两条指令的原子性。几个问题的解决:1)不加expire时可能会出现死锁问题(意外无法del时);2)使用expire时会出现超时问题,书籍中没有给出根本解决方法,只是建议加锁后的操作不要太复杂从而避免超时,以及set key 时value使用随机数而不是true,后续del时比较是否是该随机数再del以避免超时造成的连锁反应。
- 延时队列:1)通过rpush+lpop实现普通消息队列;2)通过blpop阻塞读实现阻塞队列;3)延时队列:使用有序集合实现,将到期时间作为score,相关指令 zadd 、zrangbyscore、zrem。
- 位图:主要是为了节约空间,相关指令:bitget/bitset,统计和查找bitcount/bitops
- HyperLogLog:可用于不精确地统计UV,原理是通过一系列随机数的中低位连续0个数的最大值来估计集合中随机数的数目,相关指令:pfadd,pfcount
二、一些重点图
1、HyperLogLog原理图
k和 N 的对数之间存在显著的线性相关性:
N=2^k # 约等于为了精确,使用多个桶,并对各个桶的k进行调和平均,再估计最后的N。
三、思维导图
标签:随机数,队列,无标题,expire,del,延时,HyperLogLog 来源: https://blog.csdn.net/C_chuxin/article/details/121535170