目录

一、Redis中Hash介绍

二、常用命令

三、示例

hset

hget

hmset   ..

 hexists  

hkeys  

hvals  

hincrbu

hsetnx

 四、redis中Hash底层数据结构


一、Redis中Hash介绍

Redis Hash是一个键值对集合

Redis hash 是一个String类型的 field 和 value 的映射表,hash特别适合用于存储对象

类似于Java里面的Map<String,Object>

用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储

主要有以下两种存储方式

方法一:每次修改的话需要,先取出来,然后解析,修改,再放序列化放回去,非常的麻烦,所以不推荐

方法二:如果一个对象的属性过多的话,数据就会变得非常复杂,也不推荐

于是就引出了下面的方法

二、常用命令

命令描述
hset <set> <field> <value>给<key>集合中的 <field>键赋值<value>
hget <key1> <field>从key1中取出指定的field对应的value
hmset <key1> <filed1> <value1> <filed3> <value2> ..批量插入key1的filed-value对
hexists <key1> <field> 查看哈希表key中,给定的field是否存在
hkeys <key>列出该key的所有field
hvals <key> 列出该hash集合的所有value
hincrbu <key> <field> <incerment>为哈希表key中的域field的值加上<incerment>
hsetnx <key><field> <value>给哈希表key添加field-value对,当且仅当域field不存在

三、示例

hset <key> <field> <value>

        给<key>集合中的 <field>键赋值<value>

        可以批量插入field-value对

hget <key1> <field>

        从key1中取出指定的field对应的value

注意,这里的<user:100>整体是一个key,":"不是一定要存在的

hmset <key1> <filed1> <value1> <filed3> <value2> ..

        批量插入key1的filed-value对

        但是hset也是可以批量插入的,当时作者在学习redis的时候也是十分疑惑

        后来查阅过官方文档后发现:根据Redis 4.0.0,HMSET被视为已弃用。请在新代码中使用HSET。

        在redis4.0之后,hset也是可以批量插入的,所以hmset就被弃用了

        所以推荐大家使用hset

 hexists <key1> <field> 

        查看哈希表key中,给定的field是否存在,存在则返回1,不存在返回0

                这里id域存在则返回1,xxx不存在返回0

hkeys <key> 

        列出该key的所有field

hvals <key> 

        列出该hash集合的所有value

 

hincrbu <key> <field> <incerment>

        为哈希表key中的域field的值加上<incerment>

hsetnx <key><field> <value>

        给哈希表key添加field-value对,当且仅当域field不存在

        id存在,所以添加失败,返回0,添加班级id成功,返回1

 四、redis中Hash底层数据结构

Hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表)

当field-value长度较短且个数较少时使用ziplist,否则使用hashtable

好了,这次的文章就到这里,喜欢的同学可以点赞收藏,遇到问题,可以评论,或者留言,我一定会第一时间给到回馈,感谢观看!!

注:本文为本人学习时心得分享,有讲错或者需要改正的地方,请指正,我会虚心接受

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐