redis的五种数据类型---hash类型

简介

      常用命令:hget;hset;hgetall等

      我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。

应用场景

      同样是缓存,在Memcached中,我们经常将一些结构化的信息打包成HashMap,在客户端序列化后存储为一个字符串的值,比如用户的昵称、年龄、性别、积分等,这时候在需要修改其中某一项时,通常需要将所有值取出反序列化后,修改某一项的值,再序列化存储回去。这样不仅增大了开销,也不适用于一些可能并发操作的场合(比如两个并发的操作都需要修改积分)。而Redis的Hash结构可以使你像在数据库中Update一个属性一样只修改某一项属性值。

实例介绍

key                   value

userID            username;age;birthday

普通存储方式:

第一种:key:userID;              value:username;age;birthday

第二种:key:userID+name        value:name

               key:userID+age           value:age

               key:userID+birthday    value:birthday;

      第一种缺点:当需要修改其中某一项,如生日时,需要把整个对象取出来,更新值之后,再放进去。同时在修改时还要保护并发,避免产生脏数据等;

      第二种缺点:用户ID一直在重复的存储,浪费内存;

如果用redis的hash类型,会是这样存放的,如下图:
                               

      key依旧是userID,但是value值却是一个map,map中依旧存在key和value;key是姓名标签,对应的value是具体的姓名;如果需要修改姓名值时,只加用userID+field(姓名)就可以修改姓名值了。这样操作不需要重复存储数据,也不需要想第一种那样担心,取出来之后,有并发操作。

相关命令列表

这里只介绍常用的几个

            

(这里关于redis的每一篇文章,都是初稿,因为小编还在研究中,会不断更新的)

评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阳光下是个孩子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值