0
点赞
收藏
分享

微信扫一扫

【Redis】Hash哈希类型基本使用



文章目录


1. 简介2. 常用命令3. Hash类型的数据结构


1. 简介



Redis ​​hash​​ 是一个键值对集合。



Redis ​​hash​​是一个string类型的​​field​​和​​value​​的映射表,​​hash​​特别适合用于存储对象。类似Java里面的​​Map<String,Object>​【Redis】Hash哈希类型基本使用_哈希算法



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



主要有以下2种存储方式:




  1. 每次修改用户的某个属性需要,先反序列化改好后再序列化回去。开销较大。
    【Redis】Hash哈希类型基本使用_java_02
  2. 用户ID数据冗余
    【Redis】Hash哈希类型基本使用_redis_03

【Redis】Hash哈希类型基本使用_哈希算法_04

  • 通过 key(用户ID) + field(属性标签) 就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题
    【Redis】Hash哈希类型基本使用_redis hash_05

2. 常用命令

  • 给​​<key>​​​集合中的 ​​<field>​​​键赋值​​<value>​
hset <key> <field> <value>
  • 从​​<key1>​​​集合​​<field>​​​取出 ​​value​
hget <key1> <field>

【Redis】Hash哈希类型基本使用_java_06

  • 批量设置​​hash​​的值
hmset <key1> <field1> <value1> <field2> <value2>...

【Redis】Hash哈希类型基本使用_哈希算法_07

  • 查看哈希表 ​​key​​​ 中,给定域 ​​field​​ 是否存在
hexists <key1> <field>

【Redis】Hash哈希类型基本使用_redis_08

  • 列出该hash集合的所有​​field​
hkeys <key>
  • 列出该hash集合的所有​​value​
hvals <key>

【Redis】Hash哈希类型基本使用_redis_09

  • 为哈希表 ​​key​​​ 中的域 ​​field​​ 的值加上增量
hincrby <key> <field> <increment>
  • 将哈希表 ​​key​​​ 中的域 ​​field​​​ 的值设置为 ​​value​​​ ,当且仅当域 ​​field​​ 不存在
hsetnx <key> <field> <value>

【Redis】Hash哈希类型基本使用_java_10

3. Hash类型的数据结构

  • Hash类型对应的数据结构是两种:​​ziplist​​​(压缩列表),​​hashtable​​​(哈希表)。当​​field-value​​​长度较短且个数较少时,使用​​ziplist​​​,否则使用​​hashtable​


举报

相关推荐

0 条评论