目录
一、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结构来存储
主要有以下两种存储方式
方法一:每次修改的话需要,先取出来,然后解析,修改,再放序列化放回去,非常的麻烦,所以不推荐
方法二:如果一个对象的属性过多的话,数据就会变得非常复杂,也不推荐
于是就引出了下面的方法
二、常用命令? ? ? ? 给<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
好了,这次的文章就到这里,喜欢的同学可以点赞收藏,遇到问题,可以评论,或者留言,我一定会第一时间给到回馈,感谢观看!!
注:本文为本人学习时心得分享,有讲错或者需要改正的地方,请指正,我会虚心接受
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |
标签: #redis的hash #hash #是一个String类型的 #field #和 #value