Redis的一些高并发处理,QPS超过1万的读写

本文探讨了在高QPS需求下如何部署Redis,包括读写分离、哨兵模式和集群模式。对于少量热KEY的处理,建议采用多级缓存和proxy代理。针对库存减扣接口的写热点问题,提出了限流、使用Redis计数器、合并减扣和库存分段等解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 如果某接口的QPS的要求很高,比如超过1W,怎么部署?

          redis部署层面,要做集群,redis集群有三种模式:

        1.1 读写分离。主库(写)+两个以上从库(读)

         1.2 哨兵模式:有一个独立sentinel系统监控,主从,如果主机挂了,可以把从2设置为主

->

         1.3 集群,多数据节点模式(数据存多个节点)redis 数据分片使用的是hash slot, redis集群有16384个哈希槽,每个Key通过CRC16校验后对16384取模来决定放置哪一个槽

         2. 少量热KEY的处理,怎么办?

                2.1 多级缓存,这些热key用本地缓存,

                2.2 但是业务复杂很难知道哪些会成为热key,怎么办?可采用在客户端和Redis之间做一个proxy代理(这个proxy最好单独做一个第三方的程序),监控key的访问频率,如果高的key,就缓存到客户端本地缓存,或者就缓存到proxy本地。

                网络流程:客户端 -> proxy -> Redis(客户端到proxy,根据key的hash值取模到对应的proxy)

                2.3 那这个proxy,为什么不客户端自己统计,而单独整一个proxy服务器,因为客户端应用可能很多,单个客户端自己统计不太精准,集中式统计更精准,客户端自己统计和存这些key也耗内存和性能,所以单独整一个proxy,如果proxy自己性能不好了,再横向扩展这个proxy也方便。

         Redis缓存尽量制作存储,少做业务修改。

二、减扣库存的接口QPS达到数万。怎么办?【写热点问题】

        2.1 外层限流90%,让10%可承受的流量的进来(可用Sentinel阿里的)

        2.2 到了业务层减扣redis的库存,采用redis的计数器,increment方法,这样保证原子性

        2.3 合并减扣:比如减扣1000库存,想办法值减100次,每次减掉10各库存,提升10倍性能

        2.4 库存分段模式:比如库存有1W,那么可以把这个库存分为5个key存储,每个key存2000,减扣的话就从5各分别去减,避免单个key去减扣1W

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值