Redis
文章平均质量分 87
11来了
目前在读研究生研二,会持续分享后端系列完整内容以及面试分析!
展开
-
Redis生产实战-Redis集群故障探测以及降级方案设计
那么通过 AOP 对这两个工具类的所有方法做一个切面,如果在这两个类中执行 Redis 操作时,Redis 挂掉了,就会抛出异常(Redis 连接失败),那么我们在切面的处理方法上捕捉异常,再记录下来,判断是 Redis 集群挂了还是展示网络波动。在生产环境中,如果 Redis 集群崩溃了,那么会导致大量的请求打到数据库中,会导致整个系统都崩溃,所以系统需要可以识别缓存故障,限流保护数据库,并且启动接口的降级机制。就已经记录下来了,那么降级操作的话,就从本地缓存。如果 Redis 故障的话,通过。原创 2023-12-07 20:19:14 · 863 阅读 · 0 评论 -
Redis生产实战-热key、大key解决方案、数据库与缓存最终一致性解决方案
来实现数据库与缓存的最终一致性,对于数据直接更新 DB,通过 canal 监控 MySQL 的 binlog 日志,并且发送到 RocketMQ 中,MQ 的消费者对数据进行消费并解析 binlog,过滤掉非增删改的 binlog,那么解析 binlog 数据之后,就可以知道对 MySQL 中的哪张表进行。对于大 key 会进行特殊的切片处理,并且要对大 key 进行监控,如果说发现超过 1mb 的大 key,则进行报警,并且自动处理,将这个大 key 拆成多个 k-v 进行存储,比如将。原创 2023-12-06 16:42:40 · 1936 阅读 · 0 评论 -
基于社区电商的Redis缓存架构-库存模块缓存架构(下)
DB 记录入库记录Redis 对库存进行分片,采用渐进性写入缓存轮询 Redis 节点进行扣除,如果所有节点库存不足,则合并库存进行扣除如果库存扣除成功,则 DB 记录出库记录。原创 2023-12-03 11:04:04 · 998 阅读 · 0 评论 -
基于社区电商的Redis缓存架构-库存模块缓存架构(上)
比如说新入库一个商品有 300 个,有 3 个 Redis 节点,那么我们分成 3 个分片的话,1 个 Redis 节点放 1 个分片,1 个分片存储 100 个商品,那么如果我们直接写入缓存,先写入第一个 Redis 节点 100 个库存,再写入第二个 Redis 节点 100 个库存,如果这时写入第三个 Redis 节点 100 个库存的时候失败了,那么就导致操作库存的请求压力全部在前两个 Redis 节点中,采用。那么对于该商品的瞬间高并发的操作,会分散的打到多个 Redis 节点中,原创 2023-12-03 11:02:40 · 1482 阅读 · 0 评论 -
基于社区电商的Redis缓存架构-写多读多场景下的购物车缓存架构
写多读多、写多读少的场景,以 Redis 作为主存储,通过 MQ 异步将数据进行落库持久化如果存在读出来数据,并对读出来的数据进行修改的场景的话,就要考虑是否存在并发问题了,如果存在的话,要加分布式锁进行控制。原创 2023-12-02 21:16:02 · 1610 阅读 · 0 评论 -
基于社区电商的Redis缓存架构-用户分享内容的分页列表缓存延迟构建以及异步通知缓存重建
在查询时,给获取锁添加超时时间,避免突然大量请求访问冷门数据,大量线程阻塞等待锁如果多处操作缓存和数据库,要注意加同一把锁,来保证数据的一致性在 MQ 的通知中,加锁的话,注意需要阻塞等待加锁,而不是拿不到锁就退出,因为 MQ 中的通知需要修改缓存,收到通知后是一定要修改的对于数据库中不存在的数据,在 Redis 中使用{}来进行缓存,避免缓存穿透,空缓存就可以将过期时间设置的短一些,避免大量空缓存占用缓存空间。原创 2023-11-30 13:56:50 · 1519 阅读 · 0 评论 -
基于社区电商的Redis缓存架构-缓存数据库双写、高并发场景下优化
缓存雪崩是因为大量缓存数据同时过期或者 Redis 集群故障,如果因为缓存雪崩导致 Redis 集群都崩掉了,那么此时只有数据库可以访问,我们的系统需要可以识别出来缓存故障,立马对各个接口进行限流、降级错误,来保护数据库,避免数据库崩掉,可以在 jvm 内存缓存中存储少量缓存数据,用于在 Redis 崩了之后提供降级备用数据,那么流程为:限流 --> 降级 --> jvm 缓存数据。有两个线程并发,一个读线程,一个写线程,假设执行流程如下,会造成双写不一致。,在写的时候,加的是写锁,key 为。原创 2023-11-29 14:39:44 · 1538 阅读 · 0 评论 -
Redis深入理解-主从架构下内核数据结构、主从同步以及主节点选举
通过 Redis 深入理解,可以从总体上了解到 Redis 单体架构下,server 端是如何运行起来的,以及他是如何客户端建立连接并且接收客户端时间进行处理这样一个流程以及在 Redis 集群模式下,Redis 主从节点的内核数据结构是怎样的,集群之间槽位的转移,集群节点之间通信,集群故障探测原理,主从同步数据原理以及主节点选举原理Redis 内核数据结构持久化机制pub/sub、事务、lua、慢查询。原创 2023-11-28 14:49:30 · 1263 阅读 · 0 评论 -
Redis深入理解-三次握手、槽位机制
Gossip 协议具体流程就是,对于需要同步的信息,从信息源节点开始,随机选择连接的 k 个节点来传播消息,每一个节点收到消息后,如果之前没有收到过,就也发送给除了之前节点的相邻的 k 个节点,直到最后整个网络中的所有节点都收到了消息,达到了最终一致性。解释一下为什么要进行数据迁移:如果在集群中新增加一个节点,那么该节点中的数据是空的,那么肯定不合理,因此要将其他节点中的数据转移一部分数据到新的集群节点中去,缩容同理。,每个节点负责其中一部分,那么在集群扩容或缩容时,通过给新节点分配槽位来实现数据迁移。原创 2023-11-27 21:31:20 · 1584 阅读 · 0 评论 -
Redis深入理解-内核请求处理流程、数据传输协议
AOF 将内存数据同步到磁盘中,一般采用每秒同步一次,如果同步频率过高,就会导致 Redis 性能退化,当 Redis 突然宕机,可能会丢失 1s 内的内存数据,那么在 redis-server 进程重启时,就会把磁盘存储的 aof 文件的数据给读取到内存中,还原 Redis 上次运行时的内存情况。中,那么在上边的 argv 中拿到了命令的名称,就可以去命令查找表中去查找对应的 RedisCommand,在 Redis Client 的输入缓冲区中有一个变量。原创 2023-11-23 19:25:16 · 1284 阅读 · 0 评论 -
Redis深入理解-Socket连接建立流程以及文件事件处理机制
当 server 端保持了大量的 redis client 的连接,可能在同一时间,大量的 redis client 并发的给 server 端发送大量的请求,redis server 内部大量的 socket 会突然同一时间产生大量的事件(例如 read 事件,write 事件)那么连接建立之后,客户端对于服务端的一些读写请求就会通过 socket 进行请求,请求到达服务端之后,通过 IO 多路复用将任务分发给不同的事件处理器进行处理,如果是读写请求,就将读写的响应通过 socket 响应给客户端。原创 2023-11-23 19:23:45 · 1619 阅读 · 0 评论