redis的zset有多牛?请把耳朵递过来

栏目: IT技术 · 发布时间: 5年前

内容简介:推荐阅读:

redis的zset有多牛?请把耳朵递过来

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。

本篇文章很短,但信息量很大,是关于 rediszset 。我来分享一点遇到过的线上数据,或许对你的决策有帮助。

redis 支持一个数据结构,叫做 zset ,也就是有序的列表。当然 redis 也不能滥用,可以看我以前的规范文章: 《这可能是最中肯的Redis规范了》

忘了zset是个啥的同学可以看这张gif图。

redis的zset有多牛?请把耳朵递过来

通过它,可以实现游戏排行榜一类的功能,或者实现 Topx 这样的需求,也能精准的让用户在海量数据中找到自己的位置。

zset的底层结构是跳跃表,而与之类似的 Java 中的有序Set是 TreeSet ,使用红黑树实现的。

concurrent包里面,还有一个类叫做 ConcurrentSkipListMap ,从它的名字就可以看出来,也是用跳跃表实现的,这个和zset最像。

好了,这是前提。广度面试的时候我也会这么问。

我们的问题是:zset中能存放多少条记录?线上有没有有说服力的数据?

先笼统的回答一下,zset 理论上 支持的元素最多是 2^32-1 个,约42亿,如果你的内存够大,放下国人绰绰有余。

使用 redis-benchmark 去测这个效果,不是很可信,测试用例写起来也比较费劲。测完了也不一定信,那就让线上流量去冲击吧。

为了应付产品的需求,我把用户按照省市进行了划分(geohash),结果,用户分布最大的就是广东省,非常棒。

在广东省的 zset 里,存放了接近6千万的数据,我们就要算在这6千万内任何人的排行。zcard、zrank等一系列操作,easy实现。

运行一段时间后,内存直接飙升到了 8G 左右。这是由于跳表的特殊结构所引起的,额外的辅助信息会占用更多的内存。

以下是经验值:

  1. 最高TPS写入量 1k/秒
  2. 同时最高QPS查询量 5k/秒
  3. 平均耗时 5ms 左右。
  4. 百分之 95 的请求都在 10ms 以内返回。
  5. 长尾请求超过 100ms 的不超过 100 条。

也就是说,在保持高写入和高查询的同时,zset能够保证较低的响应耗时。

你要说再多,我就不知道了,看这些数据,或许还能够再升一把。但要让服务要尽量的稳,压力尽量的分散,就不能太过苛刻,对这个数据我已经很满意了。

这只是一个省份的数据。如果综合起来,上层的业务,就需要承载10w/s的请求。这是非常容易的,但也没有意义,许多高并发经验都是这么吹上去的,要不要去改改简历?

复杂业务高并发才有价值,10w/s请求,给我两台redis就够了,没必要拿来吹。

但也是被zset的性能震惊了一把。跳表的结构,也了解一些,没想到在高并发大数据量场景下,能这么快。

测试数据?没有。本文只是分享一个经验值。对了,redis几乎不占用CPU,你只需要一台2core16gb的服务器就可以了。

作者简介: 小姐姐味道 (xjjdog),一个不允许 程序员 走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。

后台回复“ 加群 ”,带你进入高手如云交流群

推荐阅读:


以上所述就是小编给大家介绍的《redis的zset有多牛?请把耳朵递过来》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learning Vue.js 2

Learning Vue.js 2

Olga Filipova / Packt Publishing / 2017-1-5 / USD 41.99

About This Book Learn how to propagate DOM changes across the website without writing extensive jQuery callbacks code.Learn how to achieve reactivity and easily compose views with Vue.js and unders......一起来看看 《Learning Vue.js 2》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具