您的位置:首页 > 数据库 > Redis

Redis中Value使用hash类型的效率是普通String的两倍 - Gabriel Zhang

2014-04-08 00:00 543 查看
最近要开发的一个项目是分布式缓存组件,解决参数缓存高效获取的问题。参数达到了500万级别,刚刚开始了解Redis。做设计的时候考虑到Value使用哪种类型的问题?

主要面临的是使用一般的String还是使用Hash。本来直觉以为使用String的效率会高,因为Redis在Memcached的基础上升级了,扩展的Value类型应该是为了方便。没想到在效率上也有了很大的提升。

测试的环境是一台Linux物理机,安装了最新版的Redis2.6. 测试数据如下:

String类型的数据和Hash类型的数据各100w(前100万为String,后100万为Hash),随机取100次数据,比较两种的耗时;

测试的代码如下:

            RedisClient client = new RedisClient("192.168.1.59", 6379);
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < 100; i++)
{
client.Get(new Random().Next(1000000).ToString());

}
sw.Stop();
Console.WriteLine("使用String类型:"+sw.ElapsedMilliseconds);

sw.Restart();
for (int i = 0; i < 100; i++)
{
long t = new Random().Next(1000000, 199999998);
client.GetValueFromHash(t.ToString(), (t + 1).ToString());

}
sw.Stop();
Console.WriteLine("使用Hash类型:"+sw.ElapsedMilliseconds);


虽然都是毫秒级别,但是结果对比下就一目了然,我应该选择那种类型:



相差2倍的程度。

正在学习使用Redis的过程中,记下来给初学的朋友参考,日后自己也好查阅。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: