文章目录
- 特点
- 具体服务器操作命令
- 底层结构
- 应用场景
特点
1.适⽤场景:存储⽆序字典的数据,⽐如:适合存储对象类型、存储猪⾁价格等。
2.它的内部采⽤ 数组 + 链表 的结构,类似java⾥的HashMap。
hash的key值只能是字符串。将对象存储为hash结构可以针对需要来获取部分数据,⽽不是将整个对象获取。减少⽹络资源浪费。
具体服务器操作命令
添加元素到key中: HSET [key] [field1] [value1] … [fieldN] [valueN]
查询key中field的价格: HGET [key] [field]
查询key中元素个数: HLEN [key]
查询key中所有元素: HGETALL [key]
批量添加元素: HMSET [key] [field1] [value1] … [fieldN] [valueN]
批量获取元素: HMGET [key] [field1] … [fieldN]
底层结构
哈希对象编码⽀持 ziplist 和 hashtable 两种
ziplist 编码底层使⽤压缩列表实现,当有新的键值对要加⼊到哈希对象时,会先将 key 值
从队尾推⼊压缩列表中,再将这个key对应的 value 值从队尾推⼊压缩列表中;所以,同⼀键
值对的两个节点总是紧挨在⼀起的——key在前,value在后
数据结构:
hashTable:
同时满⾜两个条件时是 ziplist 编码类型,否则为 hashtable 编码类型
1.哈希对象中所有键值对中, key 和 value 的⻓度均⼩于等于64字节。
2.哈希对象中 键值对 的个数⼩于512个
应用场景
使用Hash实现购物车
将key设置为用户Id, field 可以设置为商品Id ,value为商品的数量