散列类型(hash)的键也是一种字典结构,其存储了字段(field)和字段的映射,但字段只能是字符串,不支持其他数据类型。 散列类型不能嵌套其他的数据类型。一个散列类型键可以包含至多2^32-1个字段。 一、介绍 散列类型适合存储对象:使用对象类别和ID构成
散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据类型。
散列类型不能嵌套其他的数据类型。一个散列类型键可以包含至多2^32-1个字段。
一、介绍
散列类型适合存储对象:使用对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。
如果要关系数据中存储汽车对象:
数据是以二维表的形式存储的,这就要求所有的记录都有同样的属性,无法单独为某条记录增减属性。如果想要为ID为1的汽车增加生产日期属性,就需要把数据表更改为喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20141217/20141217091544219.png" alt="\">
ID为2和3的两条记录来说data字段是冗余的。数据量多难以维护。
但是,Redis就可以自由的为任何键增减字段而不影响其他键。
二、命令
1.赋值与取值
hset不区分插入和更新操作,当执行的是插入时(之前字段不存在)hset返回1,当执行的是更新操作(之前字段已经存在)时hset返回0.当键本身不存在时hset还会自动建立它。
hgetall命令获取键中所有的字段和字段值。
Redis 8.2.3
Redis 8.2.3 是一款安全优先的高性能键值存储系统。该版本紧急修复了可能引发远程代码执行(RCE)的高危漏洞(CVE-2025-62507),并解决了 HyperLogLog 及 Cuckoo Filter 等数据结构在特定场景下的崩溃问题。建议所有用户立即升级,以保障生产环境的系统稳定与数据安全。
下载
2.判断字段是否存在
存在返回1,不存在返回0,当键不存在也返回0
3.当字段不存在时赋值
和hset区别如果字段已经存在,hsetnx命令不执行任何操作,原子操作,不用担心竞态条件。
4.增加数字
5.删除字段
三、实践
存储一篇文章
第一种方法:
第二种方法:
第二种更加直观也更容易维护,存储节约空间。
四、命令拾遗
hset key field value
hget key field
hmset key f1 v1 f2 v2......
hmget key f1 f2.....
hgetall keyhexists key fieldhsetnx key field valuehincrby key field incrementhdel key f1 f2...
hkeys key 只获取字段
hvals key 只获取字段值
hlen key 获得字段数量