当前位置: 首页 > 工具软件 > STVM > 使用案例 >

REDIS哈希与STVM性能比较

毕黎昕
2023-12-01

       redis-哈希存储类似表记录,在项目中应用比较广,本文将最近测试的REDIS和STVM性能做以下测试报告。 各有应用场景(毕竟研发的出发点不同),非评论优劣好坏,测试案例也并不全面, 仅供大家参考。

       由于STVM本身支持多进程,多线程,每张表都拥有独立锁,为了测试对比性,STVM网络服务启动1个线程,单张表,客户端采用多进程,多线程,全部采用单机部署。

测试配置:

机器配置如下:

在64位 Ubuntu上测试,机器配置如下:

4G RAM,CUP:Intel(R) Core(TM) i3 CPU       M 380  @ 2.53GHz  4核

测试案例:

本地调用

      由于redis不支持本地调用接口,因此在本地调用仅展示数据。

  • STVM多线程本地写数据
线程数进程数200W记录5次平均耗时(单位秒)
114.095
218.470
4111.713
10112.599
  • STVM多进程本地写数据:
线程数进程数200W记录5次平均耗时(单位秒)
129.275
1415.376
1515.423
11015.838

结果分析:

线程效率明显高于进程,主要原因在于读写锁,数据缓存页的交换。当然也包括CPU的进程切换、任务切换、上下文切换。在线程、进程在4个时候处于最佳效率。

  • STVM多线程本地读数据
线程数进程数200W记录5次平均耗时(单位秒)
114.481
212.422
411.744
1011.760
  • STVM多进程本地读数据
线程数进程数200W记录5次平均耗时(单位秒)
122.558
142.014
152.059
1102.143

结果分析:

采用读写锁优势在与读,线程的优势明显高于进程,同理,在线程、进程在4个时候处于最佳效率。

  • STVM多线程本地读写数据
线程数进程数200W写,200W读5次平均耗时(单位秒)
1-R 1-W113.753
2-R 1-W18.700
1-R 2-W113.103
2-R 2-W112.744
  • STVM多进程本地读写数据
线程数进程数200W写,200W读5次平均耗时(单位秒)
2-R 1-W110.870
1-R 2-W114.632
2-R 2-W114.145

结果分析:

采用读写锁优势在与读,线程的优势明显高于进程。

网络调用

   redis采用32个字段,考虑网络IO,STVM采用拥有60个成员变量的struck。

  • REDIS多线程同步写数据
线程数进程数200W写5次平均耗时(单位秒)
11665.118
21243.694
41211.005
  • STVM多线程同步写数据
线程数进程数200W写5次平均耗时(单位秒)
1162.666
2128.219
4118.573

结果分析:

网络IO相差不大,性能主要在于序列化、反序列化。

  • REDIS多线程读数据
线程数进程数200W读5次平均耗时(单位秒)
11205.487
21113.084
4195.595
  • STVM多线程读数据
线程数进程数200W写5次平均耗时(单位秒)
1163.847
2128.820
4120.033

结果分析:

网络IO相差不大,性能主要在于序列化、反序列化。

  • REDIS多线程异步写数据
线程数进程数200W写5次平均耗时(单位秒)
11165.098
21226.820
41327.821
  • STVM多线程异步写数据
线程数进程数200W写5次平均耗时(单位秒)
116.806
216.806
416.788

结果分析:

采用读操作效率高于写,异步在多线程下不增反降,STVM在单线程服务上,性能效率可以趋近到本地调用。

    这里并没有redis和stvm读写测试案例, 其实已经很明显根本不需要测试了,redis在异步写时候已经告诉你它他的处理性能(200W记录165s左右),但是STVM无论是在同步还是在异步时,都趋近本地调用。

 

篇幅有限,多线程多进程测试案例就没贴出来。

redis在分布式集群性能有待测试,毕竟STVM集群暂时还不完善。

下篇:

REDIS列表与STVM无锁队列性能比较

 

转载于:https://my.oschina.net/deffpuzzl/blog/1829358

 类似资料: