Redis 数据类型 Hash

Redis 数据类型 Hash

Redis 常用命令,思维导图 >>>

底层实现

Hash 就是字典,所以明白了这个,接着往下看就没啥问题了

Redis hash数据结构 是一个键值对(key-value)集合,它是一个 string 类型的 field 和 value 的映射表

一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对

table属性是一个数组,数组中的每个元素都是指向dictEntry结构的指针,每个dictEntry结构保存着一个键值对,size属性记录了table的大小 used哈希表目前已有的节点sizemask属性的值总是等于size-1

散列存储

创建的时候是ht0,有数据了就是ht1,然后发现数据大了,就把ht1的数据导入到ht0,然后ht1的数据被清空,ht0数据变大后,再导入到ht1。这样循环扩大存储空间

 

String+Json 和 Hash 存储对比

类型String+JsonHash
效率很高
容量
灵活性
序列化简单复杂

 

 

 

 

 

 

应用场景

1、当某个对象需要频繁的更新的时候,不适合用string+json这个方法,因为每次的更新对需要对整个对象序列化复制。如果使用hash的话,就可以直接怼某个单独的字段修改,不需要修改整个对象。(例如:销量、评论数、关注量)

2、所以说,如果你存储的数据里面有很多个field(字段),并且呢还经常更新,那么你最好使用hash,可以更加灵活。反之用string+json合适例如优惠券

 

常用命令

 
命   令说   明备   注
hdel key field1[field2......]删除 hash 结构中的某个(些)字段可以进行多个字段的删除
hexists key field判断 hash 结构中是否存在 field 字段存在返回 1,否则返回 0
hgetall key获取所有 hash 结构中的键值 返回键和值
hincrby key field increment指定给 hash 结构中的某一字段加上一个整数要求该字段也是整数字符串
hincrbyfloat key field increment指定给 hash 结构中的某一字段加上一个浮点数要求该字段是数字型字符串
hkeys key返回 hash 中所有的键——
hlen key返回 hash 中键值对的数量——
hmget key field1[field2......]返回 hash 中指定的键的值,可以是多个依次返回值
hmset key field1 value1 [field2 field2......]hash 结构设置多个键值对——
hset key filed value在 hash 结构中设置键值对单个设值
hsetnx key field value当 hash 结构中不存在对应的键,才设置值——
hvals key获取 hash 结构中所有的值——

 

posted @ 2021-01-08 10:57  汀风说后端  阅读(141)  评论(0编辑  收藏  举报