golang redis获取所有key_腾讯大佬:分享百亿级请求高可用Redis分布式集群实践

本文深入探讨了Redis在高并发场景下的应用,包括其时延优势、数据规模考虑、分布式解决方案对比,重点介绍了Redis的瓶颈与优化策略,如Pipeline的使用和命令数量的权衡。同时,文章还详述了Redis的高可用性、容灾处理和脑裂问题的预防措施,分享了在使用Redis过程中遇到的坑和解决办法。
摘要由CSDN通过智能技术生成
a5966fcae8b37fdcf7039180b52d202e.png

一、Redis有哪些常用的应用场景

819d5f46eead8fa62b5db8cad767bcfb.png

二、Redis选型思考

时延

时延=后端发起请求db(用户态拷贝请求到内核态)+ 网络时延 + 数据库寻址和读取

如果想要降低时延,只能减少请求数(合并多个后端请求)和减少数据库寻址和读取得时间。从降低时延的角度,基于单线程和内存的redis,每秒10万次得读写性能肯定远远胜过磁盘读写性能。

数据规模

以redis一组K-V为例(”hello” -> “world”),一个简单的set命令最终会产生4个消耗内存的结构。

e44fa87f6f7038cd906dd268dba3e61b.png

关于Redis数据存储的细节,又要涉及到内存分配器(如jemalloc),简单说就是存储170字节,其实内存分配器会分配192字节存储。

004afc3b2f9415827fb4893af5423016.png

那么总的花费就是

  • 一个dictEntry,24字节,jemalloc会分配32字节的内存块
  • 一个redisObject,16字节,jemalloc会分配16字节的内存块
  • 一个key,5字节,所以SDS(key)需要5+9=14个字节,jemalloc会分配16字节的内存块
  • 一个value,5字节,所以SDS(value)需要5+9=14个字节,jemalloc会分配16字节的内存块

综上,一个dictEntry需要32+16+16+16=80个字节。

03

三、种Redis分布式解决方案对比

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值