Redis-Redis的常用数据类型之Hash表

Posted 码农飞哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis-Redis的常用数据类型之Hash表相关的知识,希望对你有一定的参考价值。

您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦
💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通
❤️ 2. Python爬虫专栏,系统性的学习爬虫的知识点。9.9元买不了吃亏,买不了上当,持续更新中 。python爬虫入门进阶
❤️ 3. Ceph实战,从原理到实战应有尽有。 Ceph实战
❤️ 4. Java高并发编程入门,打卡学习Java高并发。 Java高并发编程入门
😁 5. 社区逛一逛,周周有福利,周周有惊喜。码农飞哥社区,飞跃计划
全网同名【码农飞哥】欢迎关注,个人VX: wei158556

文章目录

简介

Redis hash 是一个键值对集合,
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。它类似于Java里面的Map<String,Object>
比如现在需要存储用户信息,用户ID为查找的key,存储的value 用户对象包括姓名,年龄,账号等信息
这里有两种存储方式:

1. 将对象序列化后存储

第一种方式就是将对象序列化成字符串进行存储

这种方式的优点是存储简单,缺点就是当需要修改对象中的某个属性时需要将Redis中拿到的字符串反序列化成该对象,然后修改此对象的值,最后再将修改后的对象序列化后存到Redis中。

2. 存储为hash对象

另外一种方式就是将该对象以hash对象的形式存储到Redis中。通过hash对象的方式存储对象的话,修改单个字段就方便多了。只需要取出需要修改的那个字段的值然后直接进行修改即可。

它实际的存储结构是:

常用命令

  1. <key> 集合中的<field> 键赋值<value>
hset <key> <field> <value>
  1. <key1> 集合<field> 取出value
hget <key1> <field>
  1. 批量设置hash的值
hmset <key1> <field> <value1> <field2> <value2> ....
  1. 列出指定<key> 的hash集合的所有field
hkeys <key>


5. 查看哈希表key中,给定域field是否存在

hexists <key1> <field> 
  1. 列出指定<key> 的hash集合的所有value
hvals <key>


7. 为哈希表key中的域 field 的值加上增量1,-1

hincrby <key> <field> <increment>
  1. 将哈希表key中的域field的值设置为value,当且仅当域field 不存在
hsetnx <key> <field> <value>

数据结构

Hash类型对应的数据结构有两种:ziplist (压缩列表),hashtable (哈希表)。当field-value长度较短且个数较少时,使用ziplist,否则使用hashtable。
详细可以观看此文 Redis(十)-Redis的数据结构之字典

参考

《Redis的设计与实现》
Redis基本类型及其数据结构

以上是关于Redis-Redis的常用数据类型之Hash表的主要内容,如果未能解决你的问题,请参考以下文章

Redis-Redis的常用数据类型之zset类型

Redis-Redis的常用数据类型之zset类型

Redis-Redis的常用数据类型之Set集合

Redis-Redis的常用数据类型之Set集合

Redis-Redis的常用数据类型之list列表

Redis-Redis的常用数据类型之String字符串