【Redis7】10大数据类型之Hash类型

文章目录

1.Hash类型

Redis中的Hash类型是一种高效的数据结构,用于存储键值对的集合。这种类型特别适用于表示对象,因为它允许你将对象的多个属性(fields)作为单独的条目存储在同一个键(key)之下。

简单来说就是,Redis的数据是键值对形式(key value)的. 而Hash类型的值(value)也是键值对(fields value)形式的.

因此hash类型的值是key fields value [fields value]这种形式的. 类似于Java中的Map<String,Map<Object,Object>>

2.常用命令

  • HSET key field value:设置field对应的值。如果field已存在则更新,否则创建。
  • HGET key field:获取指定field的值。
  • HGETALL key:获取该key下所有field及其对应的值。
  • HLEN key:返回该key下field的数量。
  • HKEYS key:获取该key下所有field。
  • HVALS key:获取该key下所有field的值。
  • HEXISTS key field:检查field是否存在。
  • HDEL key field [field ...]:删除一个或多个field。
  • HINCRBY key field increment:将哈希表中field字段的值增加指定的整数值increment
  • HINCRBYFLOAT key field increment: 与HINCRBY类似,但是increment可以是浮点数,即支持对哈希表中field字段的值进行浮点数的原子性递增。
  • HSETNX key field value:只有当field不存在时才设置其值。

3.示例

以下是一些命令的使用示例:

hset和hget

HSET key field value:设置field对应的值。如果field已存在则更新,否则创建。

HGET key field:获取指定field的值。

sh 复制代码
127.0.0.1:6379> hset user1 name zhangsan age 18
(integer) 2
127.0.0.1:6379> hget user1 name
"zhangsan"
127.0.0.1:6379> hget user1 age
"18"
127.0.0.1:6379> 

hgetall

HGETALL key:获取该key下所有field及其对应的值。

sh 复制代码
127.0.0.1:6379> hgetall user1
1) "name"
2) "zhangsan"
3) "age"
4) "18"
127.0.0.1:6379> 

hlen

HLEN key:返回该key下field的数量。

sh 复制代码
127.0.0.1:6379> hlen user1
(integer) 2
127.0.0.1:6379> 

hkeys和hvals

HKEYS key:获取该key下所有field。

HVALS key:获取该key下所有field的值。

sh 复制代码
127.0.0.1:6379> hkeys user1
1) "name"
2) "age"
127.0.0.1:6379> hvals user1
1) "zhangsan"
2) "18"
127.0.0.1:6379> 

hexists

HEXISTS key field:检查field是否存在。存在返回1,不存在返回0

sh 复制代码
127.0.0.1:6379> hkeys user1
1) "name"
2) "age"
127.0.0.1:6379> hexists user1 name
(integer) 1
127.0.0.1:6379> hexists user1 email
(integer) 0

hdel

HDEL key field [field ...]:删除一个或多个field。

sh 复制代码
127.0.0.1:6379> hkeys user1
1) "name"
2) "age"
127.0.0.1:6379> hdel user1 name
(integer) 1
127.0.0.1:6379> hkeys user1
1) "age"
127.0.0.1:6379> 

hincrby和hincrbyfloat

HINCRBY key field increment:将哈希表中field字段的值增加指定的整数值increment

HINCRBYFLOAT key field increment: 与HINCRBY类似,但是increment可以是浮点数,即支持对哈希表中field字段的值进行浮点数的原子性递增。

sh 复制代码
127.0.0.1:6379> hgetall user1
1) "age"
2) "18"
3) "name"
4) "lisi"
5) "score"
6) "55.5"
127.0.0.1:6379> hincrby user1 age 1
(integer) 19
127.0.0.1:6379> hincrby user1 age -2 # 可以是负数
(integer) 17
127.0.0.1:6379> hincrbyfloat user1 score 0.5
"56"
127.0.0.1:6379> hincrbyfloat user1 score -1.5 # 可以是负数
"54.5"
127.0.0.1:6379> 

hsetnx

HSETNX key field value:只有当field不存在时才设置其值。

sh 复制代码
127.0.0.1:6379> hgetall user1
1) "age"
2) "17"
3) "name"
4) "lisi"
5) "score"
6) "54.5"
127.0.0.1:6379> hsetnx user1 age 22
(integer) 0
127.0.0.1:6379> hsetnx user1 phone 123123
(integer) 1
127.0.0.1:6379> 
相关推荐
小糖学代码30 分钟前
MySQL:14.mysql connect
android·数据库·mysql·adb
爬山算法1 小时前
Redis(69)Redis分布式锁的优点和缺点是什么?
数据库·redis·分布式
RestCloud1 小时前
从数据库到价值:ETL 工具如何打通南大通用数据库与企业应用
数据库
惜月_treasure2 小时前
Text2SQL与工作流实现:让数据库查询变得轻松又高效
数据库·人工智能·python
-睡到自然醒~2 小时前
[go 面试] 并发与数据一致性:事务的保障
数据库·面试·golang
为乐ovo2 小时前
19.DCL-用户管理
数据库
一个天蝎座 白勺 程序猿3 小时前
金仓数据库KingbaseES实现MongoDB平滑迁移全攻略:从架构适配到性能调优的完整实践
数据库·mongodb·数据迁移·kingbasees·金仓数据库
武子康3 小时前
Java-153 深入浅出 MongoDB 全面的适用场景分析与选型指南 场景应用指南
java·开发语言·数据库·mongodb·性能优化·系统架构·nosql
2401_837088503 小时前
Redis通用命令
数据库·redis·缓存
程序边界3 小时前
MongoDB迁移到KES实战全纪录(上):迁移准备与实施指南
数据库·mongodb