Redis生产实践

Redis使用

1.严禁直接对redis使用keys * 命令。

 原因:redis是单线程操作,keys *会阻塞线程,拖慢执行速度。

 替代:scan命令 scan命令是非阻塞的,

注意:返回的结果可能会有重复,需要客户端去重,这点非常重要。

2.严禁使用大key。大key规则如下:

  • Key本身的数据量过大:一个String类型的Key,它的值为5 MB。

  • Key中的成员数过多:一个ZSET类型的Key,它的成员数量为10,000个。

  • Key中成员的数据量过大:一个Hash类型的Key,它的成员数量虽然只有2,000个但这些成员的Value(值)总大小为100 MB。

3.redis热点key使用规则: 热点key的过期时间要错开,避免同一时刻内大量的key过期。

附:

大key容易造成的问题:

  • 客户端执行命令的时长变慢。

  • Redis内存达到maxmemory参数定义的上限引发操作阻塞或重要的Key被逐出,甚至引发内存溢出(Out Of Memory)。

  • 集群架构下,某个数据分片的内存使用率远超其他数据分片,无法使数据分片的内存资源达到均衡。

  • 对大Key执行读请求,会使Redis实例的带宽使用率被占满,导致自身服务变慢,同时易波及相关的服务。

  • 对大Key执行删除操作,易造成主库较长时间的阻塞,进而可能引发同步中断或主从切换。

热点key容易造成的问题:

  • 占用大量的CPU资源,影响其他请求并导致整体性能降低。

  • 集群架构下,产生访问倾斜,即某个数据分片被大量访问,而其他数据分片处于空闲状态,可能引起该数据分片的连接数被耗尽,新的连接建立请求被拒绝等问题。

  • 在抢购或秒杀场景下,可能因商品对应库存Key的请求量过大,超出Redis处理能力造成超卖。

  • 热Key的请求压力数量超出Redis的承受能力易造成缓存击穿,即大量请求将被直接指向后端的存储层,导致存储访问量激增甚至宕机,从而影响其他业务。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值