代码编织梦想

聚划算 解决高并发下的缓存击穿

我做过我们公司的聚划算迷你版 有什么问题 删除和新加的时候总有人来查

(常用就是双端检索)(我们用双端加固来解决(两件防弹衣 主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(索引升级两两取首(二分))

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_48230433/article/details/122763167

springboot集成redis_java_日月的博客-爱代码爱编程_springboot集成redis

今天,日月在这里教大家如何使用springBoot集成redis,说实话比较简单,网上也有大把的教程。先套用一下网上的简介。 定义 REmote DIctionary Server(Redis) 是一个由Salvatore

redis集群实验笔记-爱代码爱编程

在不同的机器上搭建主从时, 连不上 原因: 对配置中的bind IP理解错误, bind IP的意思是允许该IP连接到本机, 而不是本机IP; IP可以改为0.0.0.0 搭建集群时,报错 Either the node already knows other nodes (check with CLUSTER NODES) or contains s

2021年总结阿里、腾讯、百度等大厂11个Redis系列高频面试题,哪些你还不会?-爱代码爱编程

前言 现在大家的工作生活基本已经是回归正轨了,最近也是迎来了跳槽面试季,有些人已经拿到了一两个offer了。 这段时间收集了阿里、腾讯、百度、京东、美团、字节跳动等公司的Java面试题,总结了Redis系列的高频面试题: 1、Redis持久化机制 2、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 3、热点数据和冷数据是什么 4、M

B站最全Redis教程全集(2021最新版)(图灵学院诸葛)学习笔记一--五种数据结构与应用场景-爱代码爱编程

目录 一、String1、单值缓存2、对象缓存3、分布式锁4、计数器5、Web集群session共享6、分布式系统全局序列号二、哈希Hash1、常用操作2、应用场景3、优缺点三、List1、常用操作2、应用场景四、SET1、常用操作2、应用场景五、ZSET有序集合1、常用操作2、应用场景 一、String 1、单值缓存 SET key va

2021最新大厂高频微服务面试总结:腾讯Redis压轴笔记-爱代码爱编程

一、架构筑基:深入内核、直击故障、拒绝蒙圈 大家都知道,性能一直是让程序员比较头疼的问题。当系统架构变得复杂而庞大之后,性能方面就会下降,如果想成为一名优秀的架构师,性能优化就是你必须思考的问题。 所以性能优化专题从JVM底层原理到内存优化再到各个中间件的性能调优,比如Tomcat调优,MySQL调优等,让你洞悉性能本质,全面认识性能优化,不再只是旁观

Redis精通系列——Pipeline,2021最新大厂高频微服务面试总结-爱代码爱编程

在上述简介中,提到了管道技术优化的是网络传输的耗时时间,这里通过Redis客户端-服务端的一次完整的网络请求来回,深入探索pipeline的本质。 客户端调用write将数据写入操作系统内核(kernel)为socket连接分配的发送缓冲区(send buffer) 客户端操作系统内核将发送缓冲区(send buffer)的数据发送到网卡(NIC