Redis中的hash数据类型

一 hash

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

Redis中每个hash可以存储40多亿键值对。

可以看成具有KEY和VALUE的MAP容器,该类型非常适合存储值对象的信息,如:uname,upass, age等。

该类型的数据仅占用很少的磁盘空间。(相比于JSON)

二 hash常用命令

1)hset命令:设置一个key的filed对应的值,filed不存在则新增,field存在则修改field对应的值。

2)hgetall命令:获取该key的所有field以及对应的值。

3)hlen命令:获取key的长度,就是field的个数。

4)hvals命令:获取所有filed对应的value,只返回value。

5)hkeys命令:获取所有的filed,只返回filed,不返回value。

6)hmset命令:一次设置多个filed和对应的值

7)hmget命令:获取多个filed的值

 

8)hdel命令:删除filed,允许删除多个。

 9)hincrby命令:给filed字段的值增加一个数,可以是负数。不能是浮点数。

10)hexists命令:判断某个field是否存在,存在则返回1,否则返回0。

三 Hash的应用场景(存储一个用户信息对象数据)

1、常用于存储一个对象(JavaBean)
2、为什么不用string存储个对象?

        hash是最接近关系数据库结构的数据类型,可以将数据库条记录或程序中个对象转换成hashmap存放在redis中。
        用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储,主要有以下2种存储方式:
        第一种方式将用户ID作力查找key,把其他信息封装成一个对象以序列化的方式存储,这种方式的缺点是,增加了序列化/反序列化的开销,并且在需要修改其中项信息时,需要把整个对象取回,并且修改操作需要对并发进行保护,引入CAS等复杂问题。
       第二种方法是这个用户信息对象有多少成员就存成多少个key-value对儿,用用户ID+对应属性的名称作为唯一标识来取得对应属性的值,虽然省去了序列化开销和并发问题,但是用户ID为重复存储,如果存在大量这样的数据,内存浪费还是非常可观的。

总结:

        Redis提供给你的Hash很好的解决了这个问题,Redis的Hash实际是内部存储的value为一个HashMap,并提供了

直接存取这个Map成员的接口。

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值