hash
1、string 存在的问题

我们使用hash来存储:

2、hash类型
新的存储需求: 对一系列存储的数据进行编组,方便管理,典型应用存储对象信息
需要的存储结构: 一个存储空间保存多个键值对数据
hash类型: 底层使用哈希表结构实现数据存储

注意:key => filed value
hash存储结构优化
- 如果field数量较少,存储结构优化为类数组结构
- 如果field数量较多,存储结构使用HashMap结构
3、hash 类型数据的基本操作
# 添加/修改数据
hset key field value
# 获取数据
hget key field
# 获取一个key的所有值
hgetall key
# 删除数据
hdel key field1 [field2]




# 添加/修改多个数据
hmset key field1 value1 field2 value2 …
# 获取多个数据
hmget key field1 field2 …
# 获取哈希表中字段的数量(看的是filed的数量)
hlen key
# 获取哈希表中是否存在指定的字段
hexists key field



4、hash 类型数据扩展操作
# 获取哈希表中所有的字段名(fileds)或字段值
hkeys key
hvals key
#值可能重复
# 设置指定字段的数值数据增加指定范围的值 正数负数都行
hincrby key field increment
hincrbyfloat key field increment
# 存在字段就失败,不存在就添加
hsetnx key field value

注意: key中只有一个filed和value时,返回的也是一个列表;(前面的1)就表示的是列表)


5、hash使用注意事项
- hash类型下的value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象。如果数据未获取到, 对应的值为(nil)
- 每个 hash 可以存储 2 32 - 1 个键值对
- hash类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性。但hash设计初衷不是为了存 储大量对象而设计的,切记不可滥用,更不可以将hash作为对象列表使用
- hgetall 操作可以获取全部属性,如果内部field过多,遍历整体数据效率就很会低,有可能成为数据访问 瓶颈
6、hash类型应用场景1:购物车




7、hash类型应用场景2:卖手机卡



8、string存储对象(json)与hash存储对象
- string存储对象(json): 整体性,读为主(json的性质有关)
- hash存储对象: 修改方便
Redis的Hash类型用于存储键值对,适用于购物车、用户信息等场景。Hash通过哈希表实现,支持高效添加、修改和删除操作。当field数量少时,存储结构优化为类数组,多时用HashMap。注意Hash不适合存储大量数据,避免滥用。使用HSET、HGET、HDEL等命令进行操作,HINCRBY和HKEYS、HVALS用于增减和获取所有字段或值。Hash是对象存储的良好选择,对比JSON存储,修改更便捷。
168万+

被折叠的 条评论
为什么被折叠?



