栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

大厂Redis day2 自用笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

大厂Redis day2 自用笔记

聚划算 解决高并发下的缓存击穿 我做过我们公司的聚划算迷你版 有什么问题 删除和新加的时候总有人来查

(常用就是双端检索)(我们用双端加固来解决(两件防弹衣 主A缓存 从B缓存)(B存活20天A15天))
最后还可以业务上规避 到点了服务降级熔断 提示信息 但不好不见医用 占用了承诺用户的五分钟时间

分布式锁 单机版需要枷锁 Nginx 负载均衡和()下不同的jvm锁不住还是超卖 加入分布式锁 setIfAbSent(k,v)买完后删key 相当于多机器抢k 必须finally删掉有可能出异常 jar包挂了 没走到finally so k 需要过期时间 (设置锁和时间在一行 保持原子性) 又来了 张冠李戴 把别人抢到的锁删了 解决(只能自己删自己的)释放锁从数据库里捞出来看看个自己放进去的是不是同一个 又来了 判断和delete不是原子的鸭 (用脚本保持原子性) 又来了 Redis上面都是单机 几圈 AP 异步通知 主任说OK就可以 但主人刚OK就宕掉了 从机上位 表示我没有锁 cp银行 小组长都要确认通知到了— 所以我们自己写的不到位 需要Redisson 超简单 lua脚本也不用了 最后大招 锁 捞出来看看释放掉 可系 还未解决缓存续命 看门狗 解决加钟问题 必须多机 不然Redis突然宕机 over了 公司至少三台以上 官网推荐5台 Redis分布式解决不了分布式缓存问题ap 多主模式 主从模式主机宕掉 异步从机上位nonono(回顾下zk 主机宕掉了 所有都闭关选举 出新的了 出世)多个master (加锁类似可重入锁的condition) 缓存续命(看门狗) 检查持有锁的工作线程结束没 每隔着30/3=十秒检查下 每次重新续命为30秒 使用可简单了 api工程师lock 底层中间看门狗加三段lua脚本(首次新建 同线程可重入 根据返回时间确定锁还有多久过期)unlock 底层还是lua三段(判断是否同线程的锁 判断可重入锁>0刷新过期时间 小于0删K释放锁) Redis 的三大删除策略 立刻删(时间换空间) 惰性删(空间换时间) 中和定期删(抽样有漏网之鱼) 过期淘汰策略 8种 不要使用默认 使用 Allkey-lru Java一切皆对象 Redis 一切皆字典(k,v)键值对 C语言底层dictEntry(进行封装)=程序员RedisObjdect 同一个类型有三种编码格式(精确利用并节约内存) 在long取值范围内的数值int 超过embstr 长度超过44字节raw sds 可伸缩字符串 (Redis把C语言字符串重新封装)

原来 去c字符串 char数组封装 时间O(n) Redis封装后O(1)直接拿了 缩短时采用惰性删除留着看看下次有没有用

只要对embstr进行更改一定会变成raw int紧凑 embstr不分家 raw分家过(通过指针) # 就是为了极致压榨性能减少内存碎片 Redis里用的hash 底层ziplist(默认 最大不要512字节 单个最大64字节)+hashtable(数组加链表) ziplist 一旦升级 hashtable 不能降级 课外(Hashmapjdk7存的是entry 8存的是 node 数组链表红黑树) why ziplist明明有链表 因为前指针和后指针比某一个entry还要大去掉了通过len确定位置 list 底层是quicklist->底层ziplist+linkedlist set底层 intset (512)和hashtable zset底层是ziplist 和skiplist(索引升级两两取首(二分))
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727625.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号