
1.责任链模式 设计缓存模块视频限流笔记---------------dd----------------hm-redis笔记 基础-实战-高级-原理hm-redis-项目redis-基本使用redis-zhoyang-硅谷大厂------------ddd-----------------------------hm-redis----------------笔记链接描述黑马总体可以看看包括5种数据类型一些原理底层数据结构事物aof robkey过期和淘汰策略redis-入门篇-黑马包括5种数据类型常用命令整合springredis-入门篇-黑马redis-常见命令 5种bitmaphyperLoglogGeoredis-实战篇-黑马第二章 商户缓存—缓存更新策略 ,缓存双写一致性穿透、击穿、雪崩、 缓存穿透代码redis-实战篇-黑马第三章 优惠券秒杀redis全局id、乐观锁实现秒杀、单机一人一单、分布式锁lua、redission、秒杀优化–阻塞队列实现秒杀redis-实战篇-黑马第7章 redis消息队列–list pubsub streamredis-实战篇-黑马第8章 探店实现点赞set集合 点赞排行榜sortedSetzadd key value score第9章 实现 好友关注、等第10章 附近商户 GEO 用户签到 BitMap Uv统计 hyperLoglog黑马redis-分布式锁redis-高级篇-黑马rdb-aof、、aof–rdb原理redis-高级篇-黑马redis-主从、 redis-哨兵 、redis-集群redis-高级篇-黑马最佳实战 redis-bigkey、批处理 pipline,msetredis-高级篇-黑马最佳实战 服务端优化、持久化配置、命令以及安全配置、内存划分配置redis-原理篇-黑马redis-对象模型redis-数据类型的基础结构、、 redis-原理redis-原理篇-黑马redis-对象模型网络模型、内存回收(惰性、周期)、内存淘汰策略AOF日志原理详解—一处拷贝两处日志美团redis-rehashredis 的一些笔记2、六种淘汰策略检测全库数据 allkeys-random随机删除 allkeys-lru使用 LRU 算法进行筛选删除 allkeys-lfu使用 LFU 算法进行筛选删除 noeviction(默认策略)对于写请求不再提供服务 直接返回错误DEL请求和部分特殊请求除外 volatile-random随机删除 volatile-ttl根据过期时间先后进行删除越早过期的越先被删除 volatile-lru挑选最近最少使用的进淘汰 volatile-lfu最近使用次数最少的数据进行淘汰。3.bitmap3.1 问题目前有10亿数量的自然数乱序排序需要对其进行排序。限制条件在32位机器上面完成内存限制位2G 使用bitmap 去重且排序。 限制 去重了。3.2 布隆过滤器布隆-缓存穿透 代码3.3 redis hash 扩容hash 非常大需要去扩容redis是怎么扩容hash 的3.3.1 list 实现解决方法先将上面案例中的100次调整为10次便于在次场景中描述要精确的保证同一个用户每分钟最多访问10次需要记录下来用户每次访问的时间。因此对每个用户我们使用一个List列表类型的键来记录他最近10次访问的时间一旦键中的元素超过10个就判断最早的元素距离现在的时间是否小于1分钟。如果是表示用户最近1分钟访问次数超过了10次如果不是就将现在的时间加入到队列中同时把最早的元素删除。Stringkeyrate.limiting:IP;intlistLengthllen(key);if(listLength10){lpush(key,new());}else{longtimelindex(key,-1);if(now()-time60){log.info(访问频率超过了限制请稍后再试);}else{lpush(key,now);ltrim(key,0,9);}}3.3.2 zset 实现localkeyKEYS[1]-- 限流 Keylocalwindow_sizetonumber(ARGV[1])-- 窗口大小毫秒如 60000localthresholdtonumber(ARGV[2])-- 阈值如 100localnowtonumber(ARGV[3])-- 当前时间戳毫秒localmemberARGV[4]-- 请求唯一标识-- 1. 移除窗口外的旧数据redis.call(ZREMRANGEBYSCORE,key,0,now-window_size)-- 2. 添加当前请求redis.call(ZADD,key,now,member)-- 3. 统计当前窗口内的请求数localcountredis.call(ZCARD,key)-- 4. 设置 Key 过期时间略大于窗口防止内存泄漏redis.call(PEXPIRE,key,window_size1000)-- 5. 返回是否允许通过1: 允许0: 拒绝ifcountthresholdthenreturn1elsereturn0end