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次数据,比较两种的耗时;
测试的代码如下:
虽然都是毫秒级别,但是结果对比下就一目了然,我应该选择那种类型:
相差2倍的程度。
正在学习使用Redis的过程中,记下来给初学的朋友参考,日后自己也好查阅。
主要面临的是使用一般的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的过程中,记下来给初学的朋友参考,日后自己也好查阅。
相关文章推荐
- Redis中Value使用hash类型的效率是普通String的两倍
- ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象
- redis类型[string 、list 、 set 、sorted set 、hash]
- redis 的使用 (基础, key操作, string类型操作)
- redis数据库管理之String类型和hash类型
- NoSQL数据库之Redis数据库管理二(string类型和hash类型)
- linux取得redis数据库中hash类型的所有feild或者所有value
- NoSQL数据库之Redis数据库管理二(string类型和hash类型)
- 02_NoSQL数据库之Redis数据库:string类型和hash类型
- [置顶] REDIS数据类型详解LIST-HASH-SET-STRING
- Redis中String类型的Value最大可以容纳数据长度
- 02_NoSQL数据库之Redis数据库:string类型和hash类型
- Redis系列-string类型和hash类型
- Redis中String类型的Value最大可以容纳数据长度
- redis 数据类型(二)hash的使用
- (Redis_学习一)Redis关于string类型和hash类型数据操作
- redis类型[string 、list 、 set 、sorted set 、hash]
- redis-数据类型-string、hash、list、set、zset
- redis 数据类型(一)string的使用
- redis安装及数据类型简介(string、list、set、sorted_set、hash)