【《Redis深度历险》读书笔记(4)】应用(1-4)分布式锁、延时队列、位图、HyperLogLog

本文分享了《Redis深度历险》中关于分布式锁的乐观锁实现、延时队列的ZSet应用、位图节省空间技巧和HyperLogLog的不精确计数方法。通过实例解析和原理图,深入理解Redis在实际项目中的高效运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【时间】2021.11.24

【题目】【《Redis深度历险》读书笔记(4)】应用(1-4)分布式锁、延时队列、位图、HyperLogLog

本栏目是《Redis深度历险:核心原理和应用实践》的读书笔记。

目录

一、简介

二、一些重点图

1、HyperLogLog原理图

​三、思维导图

四、扩展阅读

1、Redis中的lua脚本使用


一、简介

        本章主要主要介绍了Redis 分布式锁、延时队列、位图、HyperLogLog的应用。

  1. 分布式锁:使用setnx+expire实现悲观锁,更进一步,使用set key true ex 100 nx实现两条指令的原子性。几个问题的解决:1)不加expire时可能会出现死锁问题(意外无法del时);2)使用expire时会出现超时问题,书籍中没有给出根本解决方法,只是建议加锁后的操作不要太复杂从而避免超时,以及set key 时value使用随机数而不是true,后续del时比较是否是该随机数再del以避免超时造成的连锁反应。
  2. 延时队列:1)通过rpush+lpop实现普通消息队列;2)通过blpop阻塞读实现阻塞队列;3)延时队列:使用有序集合实现,将到期时间作为score,相关指令 zadd 、zrangbyscore、zrem。
  3.   位图:主要是为了节约空间,相关指令:bitget/bitset,统计和查找bitcount/bitops
  4. HyperLogLog:可用于不精确地统计UV,原理是通过一系列随机数的中低位连续0个数的最大值来估计集合中随机数的数目,相关指令:pfadd,pfcount

二、一些重点图

1、HyperLogLog原理图

kN 的对数之间存在显著的线性相关性:

N=2^k  # 约等于

为了精确,使用多个桶,并对各个桶的k进行调和平均,再估计最后的N。

三、思维导图

四、扩展阅读

1、Redis中的lua脚本使用

1)redis lua脚本入门
2)《redis设计与实现》lua脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值