【攻克Redis】哈希类型

哈希

​ 哈希类型是指键值本身又是一个键值对结构;哈希类型中的映射关系叫作field-value,注意这里的value是指field对应 的值,不是键对应的值,请注意value在不同上下文的作用。

这里写图片描述

命令
#设置值
hset key field value
#获取值,若不存在返回nil
hget key field
#删除field
hdel key field [field ...]
#计算field个数
hlen key
#批量设置或获取field-value
hmget key field [field ...]
hmset key field value [field value ...]
#判断field是否存在,存在返回1,不存在返回0
hexists key field
#获取所有field
hkeys key 
#获取所有value
hvals key
#获取所有的field-value,可以尝试采用hscan该命令会渐进式遍历哈希类型
hgetall key
#自增指定数字,作用域为field
hincrby key field 
#自增指定浮点数,作用域为field
hincrbyfloat key field
#计算value的字符串长度(需要redis3.2以上)
hstrlen key field
内部编码
ziplist:value小于64个字节,并且field个数不会超过512个
hashtable:value大于64个字节,并且field个数超过512
使用场景

​ 缓存用户信息,用户表属性field为表的列,每条用户信息作为行

优缺点:

​ 优点:相比字符串缓存用户信息,哈希类型变得更加直观

​ 缺点:若关系型数据库新增列,需要和以前存储在redis的用户信息属性保持一致,比较困难;不可做复杂查询

缓存方式优点缺点
原生字符串(生产环境不推荐)简单直观,每个属性都支持更新操作占用过多的键,内存占用量较大,同时用户信息内聚性比较差
序列化字符串类型简化编程,如果合理的使用序列化可以提高内存的使用效率序列化和反序列化有一定的开销,同时每次更新属性都需要把全部数据取出进行反序列化,更新后再序列化到Redis中
哈希类型简单直观,如果使用合理可以减少内存空间的使用控制哈希在ziplist和hashtable两种内部编码的转换,hashtable会消耗更多内存
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

女汉纸一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值