【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> 
相关推荐
不像程序员的程序媛8 小时前
系统cpu内存负载资源分析
运维·服务器·数据库
Jane Chiu9 小时前
Oracle DBMS_REDEFINITION(在线重定义)
数据库·oracle·分区表
全栈前端老曹10 小时前
【MongoDB】安全与权限管理 —— 用户认证、角色权限、SSL 加密
前端·javascript·数据库·安全·mongodb·nosql·ssl
怕孤单的草丛10 小时前
缓存管理面临的主要问题
java·数据库·缓存
我会尽全力 乐观而坚强10 小时前
MySQL零基础入门(二)
数据库·mysql·adb
kali-Myon11 小时前
某校园门禁系统高危 SQL 注入漏洞挖掘复盘
数据库·sql·安全·web安全
程序员在囧途13 小时前
likeadmin-api API 中转站怎么做统一报价?从 /pricing、/user/balance 到 task_id 回执的落地方法
运维·服务器·数据库·likeadmin-api·api中转站·token计费
龙石数据13 小时前
MySQL 全量同步到 Hive 怎么做?三步配置教程
数据库·hive·mysql·数据治理·数据中台
程序员在囧途14 小时前
likeadmin-api API 算力超市怎么做供应商切换?统一鉴权、task_id 和 callback_url 才能稳交付
java·服务器·数据库·开放api·likeadmin-api·api算力超市