测试环境和命令:
- 阿里云VPC环境, 4 x (1核, 2G ECS) 用于运行codis proxy
- codis proxy后端slot均衡的接2个或4个阿里云redis实例
- 内网SLB连接4个codis proxy
- 只单纯测试单条读写, 命令如下:
./redis-benchmark -a <auth-passwd> -h <slb-addr> -c 64 -n 500000 -P 100 -r 1048576 -d 256 -t get,set
测试结果:
Spec. | ValueSize(byte) | ops(SET) | ops(GET) |
---|---|---|---|
直连1G redis | 256 | 6.5w | 4w |
codis接2x1G redis | 256 | 12w | 8w |
codis接4x1G redis | 256 | 26w | 16w |
codis接4x1G redis | 1024 | 8w | 4w |
codis接4x1G redis | 2048 | 4w | 2w |
codis接2x2G redis | 256 | 15w | 12w |
直连8G redis | 1024 | 9w | 80w |
直连8G redis | 2048 | 4.7w | 80w |
测试结论:
- aliyun的低配redis服务器(1G, 2G), 写入性能明显优于读取性能, 猜测读性能应该是aliyun做的流量限制
- aliyun的8G redis比较特殊, 读性能大大提升(80w), 并且无视value长度变大?! 很怀疑是不是redis-benchmark出错了
- codis的读写性能随后端节点数量是线性的, 等同于单个后端redis节点性能 * 节点数目
- codis后端4 x 1G的性能优于 2 x 2G, 写性能略低于(基本持平)直连8G redis, 读性能则远远低于。
- codis需要额外ecs计算资源部署codis proxy, 不过对于扩展性和写入性能要求较高的场景, 使用codis集群的方法比较合适
来源:oschina
链接:https://my.oschina.net/u/1433006/blog/755212