Redis底层学习(四)—存储类型-Hash篇

特点

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为商品的数量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值