跳至主要內容

2.7 Redis数据类型_Hash 🎉

刘春龙...大约 2 分钟数据库redis

2.7 Redis数据类型_Hash 🎉

Hash是一个键值对的集合。Hash 是一个 String 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

Hash存储结构优化

  • 如果field数量较少,存储结构优化为类数组结构
  • 如果field数量较多,存储结构使用HashMap结构
  • hset
    给user集合中的field赋值value。
hset user name lcl
hset user age 3

# 相当于 user:{name:lcl,age:3}

提示

  • 如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
  • 如果字段已经存在于哈希表中,旧值将被重写。
  • hget
    从key哈希中,取出field字段的值。
hget user name  # lcl
  • hmset
    批量设置哈希的字段及值。
hmset user1 name lcl age 15
  • hexists
    如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0
    判断指定key中是否存在field,
hexists user name   # 1
  • hkeys
    获取该哈希中所有的field。
hkeys key
  • hvals
    获取该哈希中所有的value。
 hvals key
  • hincrby
    为哈希表key中的field字段的值加上增量increment。
hincrby user1 age 10     #  age+10

注意

  • 增量也可以为负数,相当于对指定字段进行减法操作。
  • 如果哈希表的 key 不存在,一个新的哈希表被创建并执行 hincrby 命令。
  • 如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
  • 对一个储存字符串值的字段执行 hincrby 命令将造成一个错误。
  • hdel
    删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。
hdel user age
  • hsetnx
    给key哈希表中不存在的的字段赋值 。
hsetnx user age 10

提示

  • 如果哈希表不存在,一个新的哈希表被创建并进行 hsetnx 操作。
  • 如果字段已经存在于哈希表中,操作无效。
  • 如果 key 不存在,一个新哈希表被创建并执行 hsetnx 命令。

使用场景

  • 购物车
  • 存储对象
上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7