Redis Primer(1)基于JedisPool的Redis hset并发性能测试

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis Primer(1)基于JedisPool的Redis hset并发性能测试作者:钟超(Poechant)邮箱:zhongchao.

Redis Primer(1)基于JedisPool的Redis hset并发性能测试


  • Redis Server 与 Redis Client 位于同一台机器(从而排除带宽限制带来的影响);
  • Redis Server 版本:2.6.7;
  • Redis Client API:Jedis 2.1.0,使用 JedisPool(依赖包使用 commons-pool-1.5.3.jar);

1. 测试一:单线程客户端基于不同Key和Value长度

1.1. 测试内容
  • 不变量:
    • JedisPool 参数确定
      • minIdle = 0
      • maxIdle = 50
      • maxActive = 500
    • 测试 hset 操作
    • Field 长度为 32 bytes
  • 控制变量:
    • Key 长度;
    • Value 长度;
  • 测试内容:
    • 吞吐量(每秒访问次数)
1.2. 测试结果

Key 长度从 1 到 256 逐次 2 倍递增, Value 长度从 8 到 32768 逐次 4 倍递增。

  • 以 Key 长度为 X 轴绘制测试结果:

Resize icon

  • 以 Value 长度为 X 轴绘制测试结果:

Resize icon

1.3. 结论

Throughput 随 Key 长度变化不大(更大范围内的 Key 长度没有测试,因为一般情况下 Key 超过 256 字节的情况较少,请本人使用方式也符合该范围),但与 Value 长度相关性极大(范围较大,因本人的应用场景中 Value 值较大)。

1.4. 建议
  • 减少每个查询中的访问次数(优化查询,类似于 Database 中优化 SQL 语句);
  • 要尽可能的减小 Value。

测试二:单线程客户端基于不同连接池参数

2.1. 测试内容
  • 不变量:
    • 测试 hset 操作
    • Key 长度为 32 bytes
    • Field 长度为 32 bytes
    • Value 长度为 256 bytes
  • 控制变量
    • maxIdle
    • maxActive
  • 测试内容
    • 吞吐量(每秒访问次数)
2.2. 测试结果

maxActive 从 25 到 300 每次递增 25, maxIdle 从 50 到 450 每次递增 100。

  • 以 maxActive 长度为 X 轴绘制测试结果:

Resize icon

  • 以 maxIdle 长度为 X 轴绘制测试结果:

Resize icon

2.3. 结论

在目前的测试参数范围内,差别不大,或许需要进一步测试。从该测试结果看 maxIdle=25 且 maxActive=250 的 JedisPool 设置能够带来最大的 hset(32bits, 32bits, 256bits) 吞吐量。

2.4. 建议
  • 采用 maxIdle=25 且 maxActive=250 的 JedisPool 设置。

测试三:多线程客户端不同hset次数

3.1. 测试内容
  • 不变量:
    • 测试 hset 操作
    • Key 长度为 32 bytes
    • Field 长度为 32 btyes
    • Value 长度为 20480 bytes
  • 控制变量
    • hset 操作次数从 10000 到 1000000
  • 测试内容
    • 吞吐量(每秒访问次数)
2.3. 测试结果

hset 操作次数从 10000 到 5120 500

Resize icon

2.4. 结论与建议
  • 用多线程的客户端进行压力测试;
  • Redis 的并发性能相当不错,2KB 的数据每秒可以写入 60000 多次,平均每秒 120 MB,960 Mb,约 1Gb。
  • 如果测试小数据,应该能达到 100,000/s 以上的并发量

-

转载请注明来自(Poechant)的 CSDN 博客:http://blog.csdn.net/poechant ,作者微博:weibo.com/lauginhom

-

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
监控 供应链 测试技术
PTS压测问题之自动变成500 并发如何解决
PTS(Performance Testing Service)是一项面向网站、应用等提供的压力测试服务,用于模拟不同场景下的用户访问,评估系统的性能表现;在进行PTS压测时,可能会出现一些异常或报错,本合集将PTS压测中频繁出现的问题及其解决办法进行汇编,旨在帮助用户更有效地进行性能测试和问题定位。
277 2
|
23天前
|
缓存 NoSQL Java
Java项目:支持并发的秒杀项目(基于Redis)
Java项目:支持并发的秒杀项目(基于Redis)
26 0
|
1月前
|
弹性计算 缓存 测试技术
2核4g服务器能支持多少人访问?阿里云2核4G服务器并发数测试
2核4g服务器能支持多少人访问?阿里云2核4G服务器并发数测试,2核4G服务器并发数性能测试,阿小云账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素
|
3月前
|
消息中间件 监控 关系型数据库
PTS压测问题之多账号并发登录配置如何解决
PTS(Performance Testing Service)是一项面向网站、应用等提供的压力测试服务,用于模拟不同场景下的用户访问,评估系统的性能表现;在进行PTS压测时,可能会出现一些异常或报错,本合集将PTS压测中频繁出现的问题及其解决办法进行汇编,旨在帮助用户更有效地进行性能测试和问题定位。
240 2
|
3月前
|
存储 缓存 NoSQL
《吊打面试官》系列-Redis双写一致性、并发竞争、线程模型
《吊打面试官》系列-Redis双写一致性、并发竞争、线程模型
39 0
|
3月前
|
存储 NoSQL 关系型数据库
redis与mysql的数据一致性问题(并发更新)
redis与mysql的数据一致性问题(并发更新)
25 0
|
3月前
|
NoSQL Java Redis
Redis如何处理并发访问和竞态条件?
Redis如何处理并发访问和竞态条件?
31 0
|
3月前
|
监控 NoSQL 安全
Redis进阶-JedisPool参数优化 & 如何合理估算核心参数 & redis连接池预热
Redis进阶-JedisPool参数优化 & 如何合理估算核心参数 & redis连接池预热
89 0
|
4月前
|
NoSQL 测试技术 Redis
Redis【性能 02】Redis-5.0.14伪集群和Docker集群搭建及延迟和性能测试(均无法提升性能)
Redis【性能 02】Redis-5.0.14伪集群和Docker集群搭建及延迟和性能测试(均无法提升性能)
151 0
|
4月前
|
NoSQL 测试技术 Redis
Redis【性能 01】Redis 5.x 6.x 7.x 共5个不同版本延迟及性能测试对比分析(单机版默认配置)
Redis【性能 01】Redis 5.x 6.x 7.x 共5个不同版本延迟及性能测试对比分析(单机版默认配置)
199 0