线上生产环境的Redis是怎么部署的?

看看你了解不了解你们公司的redis生产集群的部署架构,你的redis是主从架构?集群架构?用了哪种集群方案?有没有做高可用保证?有没有开启持久化机制确保可以进行数据恢复?线上redis给几个G的内存?设置了哪些参数?压测后你们redis集群承载多少QPS?

剖析

redis cluster,10台机器,5台机器部署了redis主实例,另外5台机器部署了redis的从实例,每个主实例挂了一个从实例,5个节点对外提供读写服务,每个节点的读写高峰qps可能可以达到每秒5万,5台机器最多是25万读写请求/s。

机器是什么配置?32G内存+8核CPU+1T磁盘,但是分配给redis进程的是10g内存,一般线上生产环境,redis的内存尽量不要超过10g,超过10g可能会有问题。

5台机器对外提供读写,一共有50g内存。因为每个主实例都挂了一个从实例,所以是高可用的,任何一个主实例宕机,都会自动故障迁移,redis从实例会自动变成主实例继续提供读写服务

你往内存里写的是什么数据?每条数据的大小是多少?商品数据,每条数据是10kb。100条数据是1mb,10万条数据是1g。常驻内存的是200万条商品数据,占用内存是20g,仅仅不到总内存的50%。

目前高峰期每秒就是3500左右的请求量,比如我们吧,大型的公司,其实基础架构的team,会负责缓存集群的运维

总结

说实话,这一套东西基本构成了缓存这块你必须知道的基础性的知识,如果你不知道,那么说明你有点失职,确实平时没好好积累。

因为这些问题确实不难,如果我往深了问,可以问的很细,结合项目扣的很细,比如你们公司线上系统高峰QPS 3000?那请求主要访问哪些接口?redis抗了多少请求?mysql抗了多少请求?你到底是怎么实现高并发的?咱们聊聊redis的内核吧,看看你对底层了解的多么?如果要缓存几百GB的数据会有什么坑该这么弄?如果缓存出现热点现象该这么处理?某个value特别大把网卡给打死了怎么办?等等等等,可以深挖的东西其实有很多。。。。。

但是如果你掌握好了这套东西的回答,那么你在面试的时候,如果面试官没有全都问到,你可以自己主动合盘脱出。比如你可以说,我们线上的缓存,做了啥啥机制,防止雪崩、防止穿透、保证双写时的数据一致性、保证并发竞争时的数据一致性,我们线上咋部署的,啥架构,怎么玩儿的。这套东西你可以自己说出来,展示一下你对缓存这块的掌握。