1.前言
本篇博客将介绍Redis中五大类型之一的Hash类型
及一些其常用命令。
Reids中的Hash是一个键值对类型的集合,类似于Java里面的Map<String,Object>,同样也非常适合用来存储对象,存储对象时,可以通过对象的唯一标识来作为存储结构的key而其他对象信息存储为其对应的value,是我们比较常用的类型,那么跟随小编的脚步一起来学习一下Redis中的Hash。
2.关于对象存储方式
关于Redis中的Hash,小编觉得有必要聊一聊常用的对象存储方式。
1.第一种
以对象的唯一标识为 key 其他属性可以序列化或者json字符串的方式作为 value 进行存储
user:{id=1,name=xiaobian,age=70}
但是这样的存储方式有个缺点,就是修改对象属性时无疑会增加复杂难度
以集合元素为单位进行存储
2.第二种
第二种存储方式 将对象的唯一标识及属性名联合起来作为key 其属性值作为 value 进行存储
user_id 1
user_name xiaobian
user_age 70
但是这样的存储方式也是有缺点的,数据不够集中,大家还是可以依照业务需求而定
以集合元素为单位进行存储
3.第三种
第三种方式是以 Hash 的方式进行存储以对象的唯一标识作为 集合名 其属性名还是作为查找条件 key 对应值作为 value
user id 1 name xiaobian age 70
假如要查找 对应user的id的话 就以 user id 为标识进行查找
以集合为单位进行存储 一个对象一个集合
3.常用命令
1. hset {key} {field} {value}
使用 hset <key> <field> <value> 命令 向key对应的集合中添加一个键值对 键为 field 值为 value
如果该集合不存储则创建一个 将对应的键值对存入其中
2. hget {key} {field}
使用 hget <key> <field> 从key对应的集合中 以 field 最为键查找出对应的值
如果该集合或者该键不存在则返回 null
3. hmset {key} {field1} {value1} {field2} {value2} …
使用 hmset <key> <field1> <value1> <field2> <value2>... 命令
向对应集合中添加多个键值对
4. hexists {key} {field}
使用 hexists <key1> <field> 命令
判断集合中对应的key是否存在
存在的话 则返回 1 不存在的话 则返回 0
5. hkeys {key}
使用 hkeys <key> 命令
返回 对应集合中所有的 键
6. hvals {key}
使用 hvals <key> 命令
返回 对应集合中 所有的 值
7. hincrby {key} {field} {increment}
使用 hincrby <key> <field> <increment> 命令
使对应集合对应的键的值 加 increment
列如 hincrby user age 1 这条命令就是年龄加一
8. hsetnx {key} {field} {value}
使用 hsetnx <key> <field> <value>
使对应集合对应的键的值 设置为 increment
注意: 这条命令对应的 field 要不存在才会生效 否则设置失败返回 0
4.底层数据结构
Hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表)。当field-value长度较短且个数较少时,使用ziplist,否则使用hashtable。关于底层数据结构小编在这里就不过多介绍了这篇博客主要介绍的是Hash集合的一些常用命令,关于底层数据结构,后续小编会更新对应的文章,期待的小伙伴可以点个关注。
5.结尾
那这篇博客的内容就到这里了,今天已经是2022年10月7日了,国庆假期的最后一天,希望各位读者朋友也能快速恢复学习状态,诸君共勉,感谢大家的阅读!!!