Redis——Hash类型

Redis——Hash类型(三)

Redis的Hash类型是String类型的filed和value映射表,非常适合存储对象。相比之下,将对象存储在Hash里,占用用的空间更小,也更方便取得整个对象。通过前面的学习,大家知道Redis本身就是<Key,Value>的存储形式,那么Redis的Hash类型的存储到底是怎么一回事儿呢?当我使用<key,Map>这种形式,你一下子就懂了,相当于<key,<key,value>>的形式,其实就是把本来的key对应的单一的value值换成一个map集合即可。

原理:底层的实现结构和Java的HashMap一样,是“数组+链表”的二维结构。第一维hash的数据位置碰撞时,将碰撞元素串起来,不同的是,redis字典的值只能是字符串,这里的字典,我理解的是redis的key值,其次两者的rehash的方式也不同。Java的HashMap是一次全部rehash,耗时较高,Redis为了优化性能,采用渐进式rehash的策略。具体实现是:同时保留新旧两个hash结构,然后逐步搬迁,搬迁完之后再取而代之。

相关的命令:

1、hset + redis_key + Hash_key + value 往数据库添加数据,这里需要注意的是:redis_key是设置Redis的键,Hash_key是设置 Hash类型结构里的key。

2、hget + redis_key + Hash_key 获取数据库里的值,注意同上。

3、hsetnx + redis_key + Hash_key + value 如果key不存在,即设置新的key值。

这里分为两种情况:

1)如果reids_key不存在,不管后面的Hash_key是否存在,直接设置即可。

2)如果redis_key存在,则检查Hash_key是否存在,不存在即可设置,存在则不能设置。

注意:设置成功返回1,设置失败返回0。

4、hmget/hmset 批量处理数据。

5、hkeys + redis_key 查询redis_key下的所有Hash_key

6、hvals + redis_key 查询redis_key下的所有value

7、hlen + redis_key 查询redis_key下面的数据个数,即长度。

8、hgetall + redis_key 返回 redis_key下的所以key和value。

9、hexists + redis_key + key 查询 redis_key下面的key是否存在。

而查询redis_key是否存在,则用:exists + redis_key

10、hdel + redis_key + Hash_key 删除数据。

11、hincrby + redis_key + Hash_key num 如果value是整数,则执行增加操作,num为指定增加的数。

这里需要注意的是,命令中以h开头的,基本都是对<key,<key,value>>中,后面一个key的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

何怀逸

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

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

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

打赏作者

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

抵扣说明:

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

余额充值