Redis教程05(hash类型命令介绍)

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 前面几篇文章给大家介绍了String的常用命令,本篇主要介绍下Hash的常用命令在实际开发过程中我们肯定会碰到很多需要存储对象的需求,此时hash就比较合适了。hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

前面几篇文章给大家介绍了String的常用命令,本篇主要介绍下Hash的常用命令

Hash介绍

在实际开发过程中我们肯定会碰到很多需要存储对象的需求,此时hash就比较合适了。hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

截屏2021-12-01 上午10.09.44.png

HSet

HSet命令用来设置指定的key中的字段的值。

127.0.0.1:6379> hset user1 name zhangsan
(integer) 1


HGet


HGet命令获取指定的key中的hash值

127.0.0.1:6379> hget user1 name
"zhangsan"


HMSet


HMGet命令用来批量设置对应的key中的字段的值

127.0.0.1:6379> hmset user2 name zhangsan age 18 sex nan address sz
OK


HMGet


HMGet命令用来批量获取key中的字段所对应的值

127.0.0.1:6379> hmget user2 name age sex address
1) "zhangsan"
2) "18"
3) "nan"
4) "sz"


HDel


HDel命令可以移除指定的key中对应的字段,如果字段不存在则忽略

127.0.0.1:6379> hdel user2 address a1
(integer) 1 # 移除成功
127.0.0.1:6379> hmget user2 name age sex address
1) "zhangsan"
2) "18"
3) "nan"
4) (nil) # 不存在了


HSetNx


如果设置的字段不存在就设置值,如果存在就忽略

127.0.0.1:6379> hsetnx user2 name lisi
(integer) 0 # name字段存在,不起作用
127.0.0.1:6379> hsetnx user2 id 1001
(integer) 1 # id不存在,设置成功
127.0.0.1:6379> hmget user2 name age id
1) "zhangsan"
2) "18"
3) "1001"


HVals


HVals可以返回指定的key中所有字段的值

127.0.0.1:6379> hvals user2
1) "zhangsan"
2) "18"
3) "nan"
4) "1001"


HKeys


HKeys命令可以获取指定的key中的所有的字段信息

127.0.0.1:6379> hkeys user2
1) "name"
2) "age"
3) "sex"
4) "id"


HGetAll


HGetAll可以获取指定key中的所有的字段和对应的值,返回的形式是先返回字段然后是对应的值,所以返回的数据的长度是本身长度的两倍,如下:

127.0.0.1:6379> hgetall user2
1) "name"
2) "zhangsan"
3) "age"
4) "18"
5) "sex"
6) "nan"
7) "id"
8) "1001"

HExists


HExists用来判断指定的key中是否还有某字段,有返回1,没有返回0,如下:

127.0.0.1:6379> hexists user2 name
(integer) 1
127.0.0.1:6379> hexists user2 ids
(integer) 0


HIncrBy


HIncrBy用来增加指定的key中的某字段的值,如果字段不存在,则会创建字段与key关联,默认值为0然后增加相关数据。如果字段对应的值不是数字则报错

127.0.0.1:6379> hget user2 age
"18"
127.0.0.1:6379> hincrby user2 age 2
(integer) 20 # 增加2 并返回增加后的结果
127.0.0.1:6379> hincrby user2 age1 10
(integer) 10 # 关联字段 初始0 再加10
127.0.0.1:6379> hincrby user2 name 10
(error) ERR hash value is not an integer # 类型不匹配,报错


HIncrByFloat


该命令和HIncrBy类似,增加的是float类型的数据


HLen


HLen命令获取的是指定的key下的字段的个数

127.0.0.1:6379> hlen user2
(integer) 5

HStrLen


HStrLen获取指定key下的字段的值的长度

127.0.0.1:6379> hstrlen user2 name
(integer) 8
127.0.0.1:6379> hstrlen user2 address
(integer) 0 #不存在返回0
127.0.0.1:6379> hstrlen user2 sex
(integer) 3


~好了本文到此为止


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
14天前
|
XML JSON NoSQL
Redis的常用数据结构之字符串类型
Redis的常用数据结构之字符串类型
19 0
|
14天前
|
NoSQL Redis 数据库
Redis的全局命令及相关误区
Redis的全局命令及相关误区
22 0
|
23天前
|
NoSQL Redis 数据库
Redis中的常用命令有哪些?
Redis常用命令包括:PING测试连接,ECHO回显,SELECT切换数据库,QUIT关闭连接;KEYS查找key,EXISTS检查存在,DEL删除key,EXPIRE设置过期时间,TTL查看剩余生存时间,TYPE检测数据类型;STRING操作如SET/GET/MSET/MGET,INCR/DECR增减计数;HASH命令如HSET/HGET/HMSET/HMGET/HGETALL管理字段;LIST操作如LPUSH/RPUSH/LPOP/RPOP/LRANGE;
10 0
|
28天前
|
NoSQL Redis
Redis集群(六):集群常用命令及说明
Redis集群(六):集群常用命令及说明
168 0
|
1月前
|
缓存 NoSQL Java
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
60 0
|
6天前
|
存储 NoSQL Java
Redis 命令
Redis 命令
140 0
|
17天前
|
NoSQL Redis 数据库
通过migrate命令实现两个redis实例之间的数据迁移
通过migrate命令实现两个redis实例之间的数据迁移
|
1月前
|
NoSQL Redis 索引
[Redis]——Redis命令手册set、list、sortedset
[Redis]——Redis命令手册set、list、sortedset
|
1月前
|
存储 NoSQL Java
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
54 0
|
2月前
|
存储 消息中间件 NoSQL
Redis相关命令详解及其原理
Redis相关命令详解及其原理
60 0

热门文章

最新文章