Redis和Ssdb读取性能对比
作者:网络转载 发布时间:[ 2014/8/26 14:20:27 ] 推荐标签:软件测试 性能测试
//
Console.WriteLine("* redis lregion[50-60]");
ConsoleWait.Start();
result = OnTest(Config.RedisClient, LRegionHandler1TO2);
ConsoleWait.End();
Console.WriteLine(result);
Console.WriteLine("* ssdb lregion[50-60]");
ConsoleWait.Start();
result = OnTest(Config.SSDBClient, LRegionHandler1TO2);
ConsoleWait.End();
Console.WriteLine(result);
Console.WriteLine("* -----------------------------------------------");
//
Console.WriteLine("* redis lregion[100-110]");
ConsoleWait.Start();
result = OnTest(Config.RedisClient, LRegionHandler1TO2);
ConsoleWait.End();
Console.WriteLine(result);
Console.WriteLine("* ssdb lregion[100-110]");
ConsoleWait.Start();
result = OnTest(Config.SSDBClient, LRegionHandler1TO2);
ConsoleWait.End();
Console.WriteLine(result);
Console.WriteLine("* -----------------------------------------------");
//
Console.WriteLine("* redis hget");
ConsoleWait.Start();
result = OnTest(Config.RedisClient, HGetHandler);
ConsoleWait.End();
Console.WriteLine(result);
Console.WriteLine("* ssdb hget");
ConsoleWait.Start();
result = OnTest(Config.SSDBClient, HGetHandler);
ConsoleWait.End();
Console.WriteLine(result);
Console.WriteLine("* -----------------------------------------------");
}
private void HGetHandler(RedisClient e)
{
while (mRuning)
{
long index = System.Threading.Interlocked.Increment(ref mIndex);
ProtobufKey key = "user_" + Data.Import.Users[(int)(index % Data.Import.Users.Count)].Name;
key.Get<Model.Order, Model.Employee, Model.Customer>(e);
System.Threading.Interlocked.Increment(ref mCount);
}
}
private void LRegionHandler1TO2(RedisClient e)
{
while (mRuning)
{
ProtobufList<Model.Order> list = "Orders";
list.Range(1, 2, e);
System.Threading.Interlocked.Increment(ref mCount);
}
}
private void LRegionHandler50TO60(RedisClient e)
{
while (mRuning)
{
ProtobufList<Model.Order> list = "Orders";
list.Range(50, 60, e);
System.Threading.Interlocked.Increment(ref mCount);
}
}
private void LRegionHandler100TO110(RedisClient e)
{
while (mRuning)
{
ProtobufList<Model.Order> list = "Orders";
list.Range(100, 110, e);
System.Threading.Interlocked.Increment(ref mCount);
}
}
private void GetHandler(RedisClient e)
{
while (mRuning)
{
long index = System.Threading.Interlocked.Increment(ref mIndex);
ProtobufKey key = "user_" + Data.Import.Users[(int)(index % Data.Import.Users.Count)].Name;
key.Get<Model.User>(e);
System.Threading.Interlocked.Increment(ref mCount);
}
}
private string OnTest(RedisClient client,Action<RedisClient> handler)
{
mCount = 0;
mRuning = true;
for (int i = 0; i < 20; i++)
{
System.Threading.ThreadPool.QueueUserWorkItem((o) =>
{
GetHandler((RedisClient)o);
}, client);
}
int s = 20;
while (s > 0)
{
System.Threading.Thread.Sleep(1000);
s--;
}
mRuning = false;
System.Threading.Thread.Sleep(1000);
return string.Format("* [seconds:{1}/total:{0}]", mCount, mCount / 20);
}
}
从测试结果看来差距还是非常明显,并不象官网那样说得这么理想.虽然SSDB效率上不如REDIS,但其基于磁盘存储有着其大的优势,毕竟很多业务数据远超过服务器内存的容量.
SSDB的测试结果不理想也许是硬件环境受限,如果有个SSD硬盘的测试环境估计也得到一个更好的结果,但在测试过程中发现一个问题是SSDB占用的CPU资源也是非常大的,在以上测试过程SSDB的并发效率比不上REDIS,同时CPU损耗上基本要比REDIS高出一倍的样子.
以上测试结果紧紧是是一些情况下的性能测试对比,不能完全表述出两者在应用的差距的结果,如果需要用到这些产品的同学不防在实施前进行一些测试为实施选择提供一个更可靠的结果.
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南