`

Redis千万级的数据量的性能测试

 
阅读更多
从上篇的图中可以猜测到还会有Redis 2.2.1 的测试,相同的测试环境,1K的数据量,使用ServiceStack.Redis客户端进行如下测试:

1) Set操作

2) Get操作

3) Del操作

每一套测试分别使用三个配置进行测试:

1) 绿色线条的是开启Dump方式的持久化,5分钟持久化一次

2) 蓝色线条是开启AOF方式的持久化,每秒写入磁盘一次

3) 红色线条是关闭任何的持久化方式

对于每一个配置都使用相同的其他配置:

1) 开启VM 最大内存10GB(128字节一页)之后开始换出,VM空间160GB

2) 最大使用内存15GB,确保在Dump的时候有足够的剩余内存

3) 开启压缩,没有配置主从

现在来看一下测试结果:



从这个图中可以看出:

1) 对于没有持久化的方式,读写都在数据量达到800万的时候,性能下降几倍,此时正好是达到内存10G,Redis开始换出到磁盘的时候。并且从那以后再也没办法重新振作起来,性能比Mongodb还要差很多。

2) 对于AOF持久化的方式,总体性能并不会比不带持久化方式差太多,都是在到了千万数据量,内存占满之后读的性能只有几百。

3) 对于Dump持久化方式,读写性能波动都比较大,可能在那段时候正在Dump也有关系,并且在达到了1400万数据量之后,读写性能贴底了。在Dump的时候,不会进行换出,而且所有修改的数据还是创建的新页,内存占用比平时高不少,超过了15GB。而且Dump还会压缩,占用了大量的CPU。也就是说,在那个时候内存、磁盘和CPU的压力都接近极限,性能不差才怪。

总结一下:

1) Redis其实只适合作为缓存,而不是数据库或是存储。它的持久化方式适用于救救急啥的,不太适合当作一个普通功能来用。对于这个版本的Redis,不建议使用任何的持久化方式。否则到时候可能会死的比较难看。说白了,期望Redis是memcached的升级版,带有各种数据结构,但是不要期望Redis来和Mongodb/Kt等来比。

2) 对于VM其实也是不建议开启,虽然开启VM可以让Redis保存比内存更多的数据,但是如果冷热数据不是很明显的话性能会非常差(我的测试都是随机查询Key,冷热不明显)。当然,对于冷热明显的情况下可以设置200% - 400%的内存作为VM空间,也不建议设置10倍的内存空间作为VM(像我的配置一样)。

3) ServiceStack.Redis客户端好像有几个Bug,首先RedisTypedClient的Dispose居然没有实现,应该是要调用client.Dispose(),其次RedisNativeClient的Info属性不是每次都获取最新值的,第三PooledRedisClientManager的WritePoolIndex和ReadPoolIndex只看到加没看到减的地方,也不知道这是干啥的,其实每次都取第一个不是Active的Client就可以了,PooledRedisClientManager也没有把超时使用的Active的Client强制回收(避免使用的时候忘记Dispose占用过多的连接)。有关这几点,我会尝试联系ServiceStack.Redis的作者。
分享到:
评论

相关推荐

    微服务 Spring Boot 整合Redis 秒杀 ,全局唯一ID,乐观锁解决库存超卖,Jmeter 测试 每秒千万级并发

    在秒杀场景下,JMeter可以用来模拟大量用户同时发起秒杀请求,以此测试系统的吞吐量、响应时间和稳定性,确保在每秒千万级并发下系统仍能正常运行。 6. **系统优化**:为了应对高并发,系统通常会进行一系列优化,...

    2023年SQL语句千万万数据量优化方案-架构与开发

    在现代企业级应用中,处理大量数据已经成为常态。SQL(Structured Query Language)是数据库管理和查询的核心工具,尤其在面对千万级别的数据量时,高效的SQL语句优化显得至关重要。本资料包“2023年SQL语句千万万...

    PV千万级大型系统的建设方案.docx

    在IT领域,构建PV千万级的大型系统是一项复杂的工程,需要考虑系统架构的扩展性、稳定性和性能优化。本文将深入探讨如何使用开源技术来构建这样的系统,并重点关注以下几个核心知识点: 1. **多层级集群**: - ...

    打造千万级流量秒杀系统[视频课程].txt打包整理.zip

    【标题】与【描述】提及的是一个名为"打造千万级流量秒杀系统"的视频课程资源,这通常是一门关于构建高并发、高流量的在线秒杀系统的教学内容。秒杀系统是电商、互联网行业中常见的一种促销手段,通过短时间内大量...

    南航移动Redis-Cluster趟坑记

    起初,缓存数据量较小,主要是系统配置信息,Redis-Cluster轻松应对。随后,团队将Redis-Cluster应用于机票信息和航班动态更新,显著提升了查询速度,将响应时间从7-8秒缩短至一百多毫秒。 面对大流量挑战,尤其是...

    大数据实战——测试工具领域应对海量数据的解决方案.pdf

    而海量数据的处理则涉及数据量的巨大和维度的多样,如单个应用每天可能产生超过1000万条数据,需要有效地存储和计算这些数据。 为了解决这些挑战,孔祥云提出了一种实时应对方案。该方案包括了采集worker、实时计算...

    6年双11无一丢单的云数据库ApsaraDB.pptx

    5. **数据库服务与工具**:DTSDMS(Data Transmission Service)、ADAM(Advanced Database Administration Manager)等工具提供高效的数据迁移和管理服务,确保数据的安全传输和低延迟,最高吞吐量可达5万TPS。...

    大型网站系统与java中间件实践 pdf下载 高清完整版

    - **数据库分库分表**:通过物理拆分数据库来解决单表数据量过大的问题。 - **服务治理**:包括服务注册与发现、服务熔断与降级机制等。 - **数据同步与迁移**:实现跨数据中心的数据同步和迁移方案。 - **性能监控...

    thinkphp缓存技术详解

    在没有缓存的情况下,网站如果遇到百万级甚至千万级的访问量,将会对数据库和服务器造成极大的压力。数据库查询和数据处理的次数将随着访问量的上升而直线上升,从而导致服务器资源的严重消耗。引入缓存技术后,可以...

    鸿鹄智能云CMS站群系统-其他

    我们采用了python高并发框架系统构建底层源码结构,提升整体高并发负载性能,异步模式解决调用阻塞问题,前端展现毫秒级响应,单网站承载千万级别内容数据轻松应对,成功通过高压力测试! 代码:Python  数据库:...

    鸿鹄智能云CMS站群系统 v1.2.2

    我们采用了python高并发框架系统构建底层源码结构,提升整体高并发负载性能,异步模式解决调用阻塞问题,前端展现毫秒级响应,单网站承载千万级别内容数据轻松应对,成功通过高压力测试! 代码:Python 数据库:...

Global site tag (gtag.js) - Google Analytics