Redis基础数据类型之 Hash (基础篇)

文章详细介绍了Redis中的Hash操作命令,如HSET、HGET、HDEL等,并讨论了在Java中使用HashMap与RedisHash的差异。Hash类型适合存储对象数据,对比了使用String类型、序列化存储以及Hash类型存储用户信息的优缺点。

目录

1、Hash 操作命令

1-1、hset 命令

1-2、hget 命令

1-3、hdel 命令

1-4、hlen 命令

1-5、hmset 命令 

1-6、hmget 命令

1-7、hexists 命令

1-8、hkeys 命令

1-9、hvals 命令

1-10、hgetall 命令

1-11、hincrby 、hincrbyfloat 命令

1-12、hstrlen 命令

2、使用场景

2-1、使用String类型

2-2、将对象序列化存入redis

2-3、使用hash类型


  • Java里提供了HashMap,Redis中也有类似的数据结构,就是哈希类型。但是要注意,哈希类型中的映射关系叫作field-value,注意这里的value是指field对应的值,不是键对应的值。
  • 基本上,哈希的操作命令和字符串的操作命令很类似,很多命令在字符串类型的命令前面加上了h字母,代表是操作哈希类型,同时还要指明要操作的field的值。hset设值

1、Hash 操作命令

1-1、hset 命令

# 如果设置成功会返回1,反之会返回0。
# 此外Redis提供了hsetnx命令,它们的关系就像set和setnx命令一样,只不过作用域由键变为field
hset key field value [field value ...]

1-2、hget 命令

# 如果键或field不存在,会返回nil
hget key field

1-3、hdel 命令

# hdel会删除一个或多个field,返回结果为成功删除field的个数
hdel key field [field ...]

1-4、hlen 命令

# 计算当前key的field个数
hlen key

1-5、hmset 命令 

# 批量设值
hmset key field value [field value ...]

1-6、hmget 命令

# 批量取值
hmget key field [field ...]

1-7、hexists 命令

# 判断field是否存在,存在返回1,不存在返回0
hexists key field

1-8、hkeys 命令

#获取所有field,它返回指定哈希键所有的field
hkeys key

1-9、hvals 命令

#获取所有value
hvals key

1-10、hgetall 命令

# 获取所有field与value
hgetall key

 在使用hgetall时,如果哈希元素个数比较多,会存在阻塞Redis的可能。如果只需要获取部分field,可以使用hmget,如果一定要获取全部field-value,可以使用hscan命令,该命令会渐进式遍历哈希类型

1-11、hincrby 、hincrbyfloat 命令

# hincrby 和 hincrbyfloat,就像incrby和incrbyfloat命令一样,但是它们的作用域是filed
hincrby key field increment

1-12、hstrlen 命令

# 计算value的字符串长度
hstrlen key field

2、使用场景

从前面的操作可以看出,String和Hash的操作非常类似,那为什么要弄一个hash出来存储。

哈希类型比较适宜存放对象类型的数据,我们可以比较下,如果数据库中表记录user为:

idnameage
1lisi18
2zhangsan20

2-1、使用String类型

需要一条条去插入获取。

set user_1_name lijin;
set user_1_age 18;
set user_2_name msb;
set user_2_age 20;

优点:简单直观,每个键对应一个值

缺点:键数过多,占用内存多,用户信息过于分散,不用于生产环境

2-2、将对象序列化存入redis

set user_1 serialize(userInfo);

优点:编程简单,若使用序列化合理内存使用率高

缺点:序列化与反序列化有一定开销,更新属性时需要把userInfo全取出来进行反序列化,更新后再序列化到redis

2-3、使用hash类型

hmset user_1 name lisi age 18

hmset user_2 name zhangsan age 20

优点:简单直观,使用合理可减少内存空间消耗

缺点:要控制内部编码格式,不恰当的格式会消耗更多内存

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值