Redis中Value使用hash类型的效率是普通String的两倍
什么Redis? 点击这里
最近要开发的一个项目是分布式缓存组件,解决参数缓存高效获取的问题。参数达到了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的过程中,记下来给初学的朋友参考,日后自己也好查阅。
Redis中Value使用hash类型的效率是普通String的两倍的更多相关文章
- Redis中7种集合类型应用场景
StringsStrings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字.使用Strings类型,你可以完全实现目前 Memcached 的功能,并且效率更 ...
- Redis中7种集合类型应用场景&redis常用命令
Redis常用数据类型 Redis最为常用的数据类型主要有以下五种: String Hash List Set Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部 ...
- redis中multi和pipeline区别以及效率(推荐使用pipeline)
手册得知 pipeline 只是把多个redis指令一起发出去,redis并没有保证这些指定的执行是原子的:multi相当于一个redis的transaction的,保证整个操作的原子性,避免由于中途 ...
- Java中 如何把Object类型强转成Map<String, String>类型
首先你需要保证要转换的Object的实际类型是Map<String, String> 假设Object变量名为obj,强制转换(Map<String, String>)obj ...
- Redis对象——哈希(Hash)
哈希在很多编程语言中都有着很广泛的应用,而在Redis中也是如此,在redis中,哈希类型是指Redis键值对中的值本身又是一个键值对结构,形如value=[{field1,value1},...{f ...
- Redis 中的数据类型及基本操作
Redis 内置的数据类型有 5种:字符串String.哈希Hash.列表List.集合Set.有序集合ZSet 字符串类型 String 是 Redis 中最基本的类型,一个 key 对应着一个 v ...
- redis中的字典结构是怎样的?
点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 基础概念 redis支持的5种数据类型中,有hash类型,hash类型的 ...
- Redis 中的事务分析,Redis 中的事务可以满足ACID属性吗?
Redis 中的事务 什么是事务 1.原子性(Atomicity) 2.一致性(Consistency) 3.隔离性(Isolation) 4.持久性(Durability) 分析下 Redis 中的 ...
- redis基础二----操作List类型
1.lpush的使用方法 2.rpsuh的使用方法 3.删除元素 lrem中2值的是删除2个集合中的“b”元素 4. 通过上面的分析,redis中的list比较类型java的qunue队列
随机推荐
- Python之Scrapy爬虫框架安装及简单使用
题记:早已听闻python爬虫框架的大名.近些天学习了下其中的Scrapy爬虫框架,将自己理解的跟大家分享.有表述不当之处,望大神们斧正. 一.初窥Scrapy Scrapy是一个为了爬取网站数据,提 ...
- 一个CURL
CURL curl是利用url语法规则来传输文件,数据的工具,主要实现和服务器中网页,资源传输的工具.这里有一个关于感冒还没好的段子. 1.去phpini开启curl扩展,重启阿帕奇或者配置环境变量或 ...
- nginx url 重写
rewrite ^([^\.]*)/platform/(.+)/(.+)-(.+)\.html$ $1/platform.php?mod=asklist&ym=$2&fl=$3& ...
- psp工具需求分析
PSP个人软件过程开发工具需求分析文档 a.业务需求 a.1 背景 二十一世纪是软件开发的黄金时期,有人把过去的十年称作软件高度发展的十年,不可置疑,越来越多的软件设计需求是物联网时代的趋势,越 ...
- Qt Sqlite qwt 发布过程中碰到的问题runtime error
qt版本:4.8.0 qwt版本:6.1.2 使用dll show检测缺少的dll,或者笨一点的方法,点击运行差什么找什么放进去: 左上显示exe调用哪些dll,右边是dll又再次调用啦哪些dll: ...
- nodejs笔记2
下面在改变app.js的代码,可以通过不同的请求的url来返回不同的内容,注意1.html前的/不能省略,要细致 2.下面呢就是开始数据库的一些操作了 (1)在代码中引入模块var mongodb=r ...
- npm下载速度太慢
因为墙的原因导致下载速度过慢,解决方式就是使用国内镜像 使用淘宝的镜像 npm config set registry="http://registry.npm.taobao.org/&qu ...
- oracle官方文档的阅读方法
Concept 包含了 oracle 数据库里面的一些基本概念和原理, 比如 数据库逻辑结构, 物理结构, 实例结构, 优化器, 事务等. PDF 460页 Reference 包含了动态性能视图, ...
- VS2010 网页错误
VS2010向导添加消息处理时,弹出以上错误,原因之一为: 类内没有定义IDD的宏
- 前端学习之touch.js与swiper学习
Touch.js是移动设备上的手势识别与事件库,改框架基于原生js,操作简单,主要分drag,swipe,rotate,scale,tab,hold,touch操作. swiper是一个移动端触摸滑动 ...