对《Redis深度历险:核心原理和应用实践》(作者:钱文品)这本书的知识进行了自己的理解总结。
目录
数据结构
字符串数据结构
list(列表)
内部实现:快速列表
hash(哈希)
set(集合)
zset(有序列表)
内部实现:跳表
分布式锁
解决setnx(抢锁)和expire(给锁设置过期时间,防死锁)的原子操作问题
解决业务时长超过锁过期时间的问题
redis实现队列
利用list实现异步消息队列
解决队列空了导致客户端不断调用pop()、产生浪费资源的空轮询问题
-调用sleep,让线程睡一会。
解决sleep导致的消息延迟问题
利用zset实现延时队列
HyperLogLog
解决大流量、较精确的去重计数的统计问题(不能判断某元素是否存在,只能去重计数)。
布隆过滤器
解决大流量、高并发、较精确需求的去重问题。
自定义布隆过滤器参数
布隆过滤器原理
redis限流问题
简单限流:滑动窗口
滑动窗口限流的缺点
高级限流:漏斗算法
Redis-Cell——解决漏斗算法在更新参数时产生的并发问题
redis使用GeoHash算法实现地理位置的存储
查找符合条件的key——keys和scan指令
scan参数
存储结构
scan的遍历顺序
字典的扩容和缩容