首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Redis你不得不知道的一些套路

1、为什么redis单线程架构,性能还能如此好,为什么不采用多线程。

首先redis是纯内存数据库,在redis上面其实是没有缓存命中率问题的,只要你往redis上存了,数据就一定在内存里面。

为什么单线程性能还如此好,因为原因a,既然采用了纯内存,在redis规范的使用条件下,都是O(1)操作,所以在这种情况下,从redis获取数据不是系统的瓶颈,这种时候redis依赖的网络将成为主要瓶颈,所以redis采用网络io多路复用

为什么不采用多线程,还是因为a,在redis规范的使用条件,大部分操作都是O(1),还是那句话,内存操作已经不是redis的瓶颈,为何还要采用多线程,多线程可比单线程复杂多了。况且采用多线程带来的锁竞争,未必会比单线程快。

2、血泪史得到的redis操作规范。

凡是redis操作中O(n),比如LRANGE key 0 -1 、LSET 、HGETALL都要慎用,这些key当很小的时候对性能的影响不明显,当这些key在一些无意识的情况下变的很大,此时就会暴露出redis单线程模型的缺点,阻塞其他操作,造成整个业务系统性能下降。

还是使用redis这个数据库作为缓存cache,一定要对热门的key做业务系统内部缓存,防止redis集群单片过热,导致整个业务系统其模块性能下降。一个操作O(1),并发10000qps,redis单个分片将阻塞,这也是避免热分片,尽量将这种热key提前CodeReview的时候查出来。

避免单key数据过大,道理和b类似,单个操作O(1),然而内存copy的时候花了O(10000),最后得到的效果一样。

写了很久居然忘发了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181223A0N3P700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券