Redis缓存相关面试题

怎么保证redis是高并发以及高可用的?

Redis如何通过读写分离来承载读请求QPS超过10万+?

一般来说 读高并发 而不是 写高并发 (读多写少)(写多读少最好用异步【消息队列】)

所以读写分离:主从架构 主负责写 从节点负责读

QPS太高可以直接增加从节点即可

分库分表原理及中间件相关面试题

为什么要分库分表?

数据库扛不住太大的流量,单表数据量太大,查询慢

什么是分库?什么是分表?

所谓分库就是把一个库中的数据拆分到多个库中,避免了单库流量太大

分表就是把一个表的数据放到多个表中,然后查询的时候你就查一个表。比如按照用户id来分表,将一个用户的数据就放在一个表中。然后操作的时候你对一个用户就操作那个表就好了。这样可以控制每个表的数据量在可控的范围内,比如每个表就固定在200万以内。

常用消息中间件扫盲及面试题

写在前面: 这篇文章是看Java工程师面试突击第1季(可能是史上最好的Java面试突击课程)-中华石杉老师视频的一个总结,文章中第三方图片均归原作者所有。

什么是消息队列?

在计算机科学中,消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户。消息队列提供了异步的通信协议,每一个贮列中的纪录包含详细说明的数据,包含发生的时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发送者和接收者不需要同时与消息队列交互。消息会保存在队列中,直到接收者取回它。

简单来说,消息队列是用来收发消息的。这里边的消息并不是单纯的指字符消息,也可以是一些字节序列等等。