频道栏目
首页 > 数据库 > 其他综合 > 正文
哈希结构常用命令、不常用命令以及内部编码
2017-09-20 15:16:59         来源:  
收藏   我要投稿

Redis系列-哈希(Hash)结构

1.基本

hash是第二种redis结构,在编程语言中非常常见。在redis里,哈希又是另一种键值对结构。redis本身就是key-value型,哈希结构相当于在value里又套了一层kv型数据。哈希和C#里的字典,java里的map结构是一样的。

2.常用命令

下面所有描述里 {}都是必需参数,<>是可选参数

设置值

hset {key} {field} {value}

key:键名

field:哈希结构中的键名

value:哈希结构中的键名对应的值

注意,这里只能设置一条。如果要设置多条,用 hmset命令 hset {key} {field} {value} [{field} {value}…]

获取值

hget {key} {field}

如果不存在,会返回nil。

这里第一个key是找到这个哈希结构的数据,第二个参数field是取里面对应的值。

当返回nil时,是里面的这一个值不存在,而不是这个哈希结构数据不存在

批量获取用hmget

这里写图片描述

获取和设置如下图

这里写图片描述

统计field个数

hlen {key}

判断field是否存在

hexists {key} {field}

这里判断的是哈希中存不存在,而不是判断这一整条哈希数据存在。如果要判断这一整条数据是否存在,用exists

遍历哈希结构

遍历键

hkeys {key}

这里写图片描述

遍历值

hvals {key}

这里写图片描述

遍历键和值

hgetall {key}

这里写图片描述

使用时,这个命令会遍历所有的,当数据量大时会阻塞redis。redis是单线程程序,只要阻塞就会一直卡住,所以在线上环境不要使用。

3.不常用命令

自增、自减

hincrby {key} {field}

hincrbyfloat {key} {field}

和上一节讲的incrby incrbyfloat一样,只是这里的作用在哈希数据的值上面。

4.内部编码

有两种:

ziplist:

内部更加紧凑。

当键的个数小于hash-max-ziplist-entries(默认512)的配置时

同时所有值小于hash-max-ziplist-value(默认64)的配置时

才会使用ziplist

hashtable:

当不能使用ziplist时,就会使用这个结构,因为不满足上面两个条件时,ziplist的读写效率会降低。而hashtable的读写时间复杂度为O(1)。

5.适合场景

1.存对象信息

但使用hash存对象的信息时要注意避免在ziplist和hashtable之间进行转换。hashtabl会消耗更多的内存。

点击复制链接 与好友分享!回本站首页
上一篇:单元测试出现未实现序列化错误的原因
下一篇:使用不同的参数在手机端和PC端展示Echarts图表
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站