Redis实战(4)数据类型二Hashes-阿里云开发者社区

开发者社区> 技术小美> 正文

Redis实战(4)数据类型二Hashes

简介:
+关注继续查看

Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加、 删除操作都是 O(1)(平均)。
hash 特别适合用于存储对象。相较于将对象的每个字段存成单个 string 类型。
将一个对象存储在 hash 类型中会占用更少的内存,并且可以更方便的存取整个对象。省内存的原因是新
建一个 hash 对象时开始是用 zipmap(又称为 small hash)来存储的。

这个 zipmap 其实并不是 hash table,但是 zipmap 相比正常的 hash 实现可以节省不少 hash 本身需要的一些元数据存储开销。尽管 zipmap 的添加,删除,查找都是 O(n),但是由于一般对象的 field 数量都不太多。所以使用 zipmap 也是很快的,也就是说添加删除平均还是 O(1)。如果 field 或者 value
的大小超出一定限制后,Redis 会在内部自动将 zipmap 替换成正常的 hash 实现. 

这个限制可以在配置文件中指定

1
2
hash-max-zipmap-entries 64 #配置字段最多 64 个
hash-max-zipmap-value 512 #配置 value 最大为 512 字节

下面说一下Hash的基本命令:

hset:

设置 hash field 为指定值,如果 key 不存在,则先创建。
165107311.png

hsetnx:

设置 hash field 为指定值,如果 key 不存在,则先创建。如果 field 已经存在,返回 0,nx 是not exist 的意思。
165240566.png

第一次执行是成功的,但第二次执行相同的命令失败,原因是 field 已经存在了。

hmset:

同时设置 hash 的多个 field。
165743138.png

hget:

获取指定的 hash field。
hmget:

获取全部指定的 hash filed。
170415301.png

不存在的field,会返回nil

hincrby:

指定的 hash filed 加上给定值
172633893.png

hexists:

测试指定 field 是否存在。
172910693.png

通过上例可以说明 field2 存在,但 field9 是不存在的。
hlen:

返回指定 hash 的 field 数量。
173008402.png

hdel:

删除指定hash的field

173306474.png

hkeys:

返回 hash 的所有 field。
173410643.png

hvals:

返回 hash 的所有 value。
174300231.png

hgetall:

获取某个 hash 中全部的 filed 及 value。
174358645.png


可见,一下子将 myhash 中所有的 field 及对应的 value 都取出来了。



















本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1337661,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C#使用OleDB操作ACCESS插入数据时提示:标准表达式中数据类型不匹配。
C#使用OleDB操作ACCESS插入数据时提示:标准表达式中数据类型不匹配。 OleDbParameter param = new OleDbParameter("" + dc.
652 0
《Redis实战》一导读
Chris Testa是我在圣莫尼卡Google分部工作时认识的一个朋友,我从2010年3月开始和他一起在加利福尼亚州贝弗利山的一间小创业公司工作,Chris是公司的领头和主管,而我则受聘于他成为了公司研究部门的架构师。
1507 0
Redis不同数据类型命令使用及应用场景
Redis不同数据类型命令使用及应用场景
2202 0
+关注
6906
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载