【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> 
相关推荐
用户6279947182624 分钟前
南大通用GBase 8c分布式版本gha_ctl 命令-HI参数详解
数据库
斯汤雷13 分钟前
Matlab绘图案例,设置图片大小,坐标轴比例为黄金比
数据库·人工智能·算法·matlab·信息可视化
SQLplusDB20 分钟前
Oracle 23ai Vector Search 系列之3 集成嵌入生成模型(Embedding Model)到数据库示例,以及常见错误
数据库·oracle·embedding
喝醉酒的小白40 分钟前
SQL Server 可用性组自动种子设定失败问题
数据库
chem41111 小时前
Conmon lisp Demo
服务器·数据库·lisp
爱的叹息1 小时前
Java 连接 Redis 的驱动(Jedis、Lettuce、Redisson、Spring Data Redis)分类及对比
java·redis·spring
m0_555762901 小时前
QT 动态布局实现(待完善)
服务器·数据库·qt
松韬2 小时前
Spring + Redisson:从 0 到 1 搭建高可用分布式缓存系统
java·redis·分布式·spring·缓存
天上掉下来个程小白2 小时前
Redis-14.在Java中操作Redis-Spring Data Redis使用方式-操作列表类型的数据
java·redis·spring·springboot·苍穹外卖
孪生质数-2 小时前
SQL server 2022和SSMS的使用案例1
网络·数据库·后端·科技·架构