• 转Redis性能测试


    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 以上的并发量

    -

  • 相关阅读:
    JAVA开发环境配置
    Java volatile关键字解惑
    Java实验案例(接口)
    Java 实验案例(多态)
    Eclipse 快捷键大全
    全球免费开放的电子图书馆
    Java 实验案例(类和对象篇)
    Java IO流(二)
    Linux zsh 实用配置
    Js远程调用封装
  • 原文地址:https://www.cnblogs.com/legendary/p/3620572.html
Copyright © 2020-2023  润新知