Redis缓存与异步请求多个sql的性能问题

项目上需求一个异步的批量sql请求。使用了两种方式,一种是一个异步提交,后台处理多个sql后返回。另一种是多个异步提交,分别处理一个sql。
下面来看两种请求的性能。

单个异步提交处理多个sql ##Redis缓存与异步请求多个sql的性能问题

通过谷歌的开发工具,可以看出。一个异步请求多个sql(22个)花费了将近40秒的时间。

使用多个异步请求

Redis缓存与异步请求多个sql的性能问题
多个异步同时请求发现,一次完整的页面请求到返回数据结束。只花费不到15秒。
原来,异步提交的时候是一种批量提交(多个异步同时提交)。因这种提交方式,sql得以并行查询。所以效率上有提高。
因此,当需要异步请求多个sql时,可以选择多个异步来提交。

下面再来看一下使用redis缓存之后的效果

单个异步提交处理多个sql(缓存处理)

Redis缓存与异步请求多个sql的性能问题
从开发这工具这里可以得知,加了缓存之后的单个异步提交。性能优化明显,整个页面请求结束只花费1.2秒。

使用多个异步请求(缓存处理)

Redis缓存与异步请求多个sql的性能问题
多个异步请求加缓存优化后,效果没有单个异步请求的明显。整个页面请求下需要2秒的时间。(这里请求量不是很多,如果量大,可能效果会更差)
原来,加了缓存之后。性能上的消耗,从sql查询转换成了redis的读取。多次读取redis仍需要花费一些时间(当然,跟sql查询相比较这点时间可以忽略不计)
所以,在异步请求上加缓存,还需考虑业务需求。如果数据不需要经常刷新,还是选择一个异步请求多个sql的方式比较好。(前提是,请求的sql量大)。如果数据需要经常刷新,或者有时候需要人工来刷新一下,那么还是选择多个异步请求比较好,毕竟人工刷新之后等40秒才加载出数据真能让人崩溃。