摘要:对于哈希数据类型Hash,有些小伙伴在实际的项目开发中相对于Redis其他的数据结构而言,可能用得并不多。然而,从“道”的层面上看,这丝毫不影响一个客观事实、规律的存在,那就是哈希Hash本身也很强大,从本文开始我们将介绍数据类型~哈希Hash的相关特性及其相应的API和命令行层面上的操作!
内容:对于数据类型哈希Hash,可能有些小伙伴在实际的项目开发中用得并不是很多,而更多的替代性方案是采用前面篇章介绍的:字符串String、列表List、集合Set、有序集合SortedSet等数据结构。
然而,用得少归用得少,其作用还是很强大的,特别是在存储“同种对象类型”的数据列表时哈希Hash更能提现其优势,除此之外,其最大的、直观上的作用便是“减少了缓存Key的数量”,而这主要还得得益于哈希Hash底层存储数据时的存储方式,如下图所示:
从上图中可以看到,哈希Hash底层存储数据的方式确实跟其他数据结构有点不同,其他数据结构几乎都是:Key-Value的存储,而Hash则是:Key – [Field-Value] 的存储,也就是说其他数据结构的Value一般是确切的值,而Hash的Value是一系列的键值对,通常我们是这样子称呼Hash的存储的:大Key为实际的Key,小Key为Field,而具体的取值为Field对应的值。
一、命令行的方式实战哈希Hash
接下来,我们先采用命令行的方式来认识认识这位大佬,如下图所示,debug给各位小伙伴罗列出了常见、常用的命令行列表:
(1)往哈希表指定的Key添加File-Value对(单独添加Field-Value:HSET key field value;HSETNX key field value):
HMSET classOne 2010 xiaoming 2011 xiaohong 2012 debug 2013 jack
(2)获取哈希表中指定 Key的所有字段和值:
HGETALL classOne 返回值: 1) "2010" 2) "xiaoming" 3) "2011" 4) "xiaohong" 5) "2012" 6) "debug" 7) "2013" 8) "jack"
(3)获取存储在哈希表中Key指定字段的值:
HGET classOne 2010 返回值:"xiaoming"
(4)删除哈希表中key对应的一个或多个字段Field:
HDEL classOne 2010
(5)查看哈希表的key中,指定的字段是否存在:
HEXISTS classOne 2010 返回值:(integer) 0
更多请见:http://www.mark-to-win.com/tutorial/51066.html