# 性能优化

  • Redis 的 QPS 主要受网络延迟、CPU 频率影响。
  • Redis 的读写速度很快,IO 压力小。因此没有必要读写分离,只是需要横向扩容。
  • 当系统内存不足时,Redis 会卡顿,甚至可能被 OOM 杀死。

# redis-benchmark

:Redis 官方提供的性能测试工具, Redis 安装后自带。

命令:

redis-benchmark
               -h 127.0.0.1 # redis 服务器的 IP 地址
               -p 6379      # redis 服务器的端口号
               -a ******    # 密码

               -c 50        # 模拟连接的 client 数(默认 50 个)
               -n 100000    # 模拟发出的请求数
               -l           # 循环测试,不停止
               -d 3         # set、get 时的 value 大小(默认为 3 bytes)
               -r 10000     # 使用随机的名字创建 key
               -t set,get   # 只执行某些测试用例(默认执行所有测试用例)
               -P 10        # 使用管道,每次通信发送 10 条命令(默认每次只发送一条)
  • 例:redis-benchmark -h redis-1 -a ****** -t set,get
  • 即使用 -a 选项指定的密码是错的,redis-benchmark 也依然可以运行,且不会报错。
  • 当 -c 太少时,QPS 会比较小。当 QPS 达到瓶颈时,增加 -c 数,QPS 也不会增加。
  • 测试时会在 Redis 服务器的 0 号数据库中创建几个 key ,比如 mylistkey:__rand_int__ 等。测试完之后不会删除。
  • 使用 -r 10000 选项时,会使用 10000 范围内的随机数给 key 命名,例如:key:000000000912key:000000000882 。测试写入 3×10000 次 key 时,就能创建接近 10000 个 key ,每个 key 占用的内存由 -d 选项决定。