首页 > 数据库 >Redis 哈希(Hash)

Redis 哈希(Hash)

时间:2023-03-27 11:56:16浏览次数:35  
标签:Hash NAME Redis host 哈希 表中 返回值

Redis 哈希(Hash)

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

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

实例

> hset host name dgg1023 ip 192.168.0.0.1
2
> hgetall host
name
dgg1023
ip
192.168.0.0.1

命令

Hdel

Redis Hdel 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。

语法

> HDEL KEY_NAME FIELD1.. FIELDN 

返回值

被成功删除字段的数量,不包括被忽略的字段。

实例

> hset host desc myHost
1
> hdel host field1
0
> hdel host desc
1

Hexists

Redis Hexists 命令用于查看哈希表的指定字段是否存在。

语法

> HEXISTS KEY_NAME FIELD_NAME 

返回值

如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。

实例

> hexists host name
1
> hexists host test
0

Hget

Redis Hget 命令用于返回哈希表中指定字段的值。

语法

> HGET KEY_NAME FIELD_NAME 

返回值

返回给定字段的值。如果给定的字段或 key 不存在时,返回 nil 。

实例

> hget host name
dgg1023
> hget host status
null

Hgetall

Redis Hgetall 命令用于返回哈希表中,所有的字段和值。

在返回值里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍。

语法

>  HGETALL KEY_NAME 

返回值

以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。

实例

> hgetall host
name
dgg1023
ip
192.168.0.0.1

Hincrby

Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。

增量也可以为负数,相当于对指定字段进行减法操作。

如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。

如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。

对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。

本操作的值被限制在 64 位(bit)有符号数字表示之内。

语法

> HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER 

返回值

执行 HINCRBY 命令之后,哈希表中字段的值。

实例

> hincrby host job_count 1
1
> hincrby host job_count -1
0
> hget host job_count
0

Hincrbyfloat

Redis Hincrbyfloat 命令用于为哈希表中的字段值加上指定浮点数增量值。

如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。

语法

> HINCRBYFLOAT key field increment

返回值

执行 Hincrbyfloat 命令之后,哈希表中字段的值。

实例

> hincrbyfloat host mem_useage 0.2
0.2
> hincrbyfloat host mem_useage 0.2
0.4
> hincrbyfloat host mem_useage 0.3
0.7
> hincrbyfloat host mem_useage 0.3
1

Hkeys

Redis Hkeys 命令用于获取哈希表中的所有域(field)。

语法

>HKEYS key 

返回值

包含哈希表中所有域(field)列表。 当 key 不存在时,返回一个空列表。

实例

> hkeys host
name
ip
job_count
mem_useage

Hlen

Redis Hlen 命令用于获取哈希表中字段的数量。

语法

> HLEN KEY_NAME 

返回值

哈希表中字段的数量。 当 key 不存在时,返回 0 。

实例

> hlen host
4

Hmget

Redis Hmget 命令用于返回哈希表中,一个或多个给定字段的值。

如果指定的字段不存在于哈希表,那么返回一个 nil 值。

语法

> HMGET KEY_NAME FIELD1...FIELDN 

返回值

一个包含多个给定字段关联值的表,表值的排列顺序和指定字段的请求顺序一样。

实例

> hmget host name ip
dgg1023
192.168.0.0.1

Hmset

Redis Hmset 命令用于同时将多个 field-value (字段-值)对设置到哈希表中。

此命令会覆盖哈希表中已存在的字段。

如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。

语法

> HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN 

返回值

如果命令执行成功,返回 OK 。

实例

> hmset host uuid absdaf12fdas1515 status 1
OK

Hset

Redis Hset 命令用于为哈希表中的字段赋值 。

如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。

如果字段已经存在于哈希表中,旧值将被覆盖。

语法

> HSET KEY_NAME FIELD VALUE

返回值

如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。

实例

> hset host project com.ali.mysql
1

Hsetnx

Redis Hsetnx 命令用于为哈希表中不存在的的字段赋值 。

如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。

如果字段已经存在于哈希表中,操作无效。

如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。

语法

> HSETNX KEY_NAME FIELD VALUE

返回值

设置成功,返回 1 。 如果给定字段已经存在且没有操作被执行,返回 0 。

实例

> hsetnx host project com.ali.redis
0

Hvals

Redis Hvals 命令返回哈希表所有的值。

语法

> HVALS key

返回值

一个包含哈希表中所有值的列表。 当 key 不存在时,返回一个空表。

实例

> hvals host
dgg1023
192.168.0.0.1
0
1
absdaf12fdas1515
1
com.ali.mysql

思考:

在什么场景下适用hash存储数据

标签:Hash,NAME,Redis,host,哈希,表中,返回值
From: https://www.cnblogs.com/hcgk/p/17261070.html

相关文章

  • 解决哈希冲突的方法
    1.开放定址法:线性探测法、平方探测法等。就是哈希冲突后,加上一个便宜,寻找不冲突的位置。ThreadLocal采用这种方法。2.拉链法:哈希冲突后,通过链表解决。HashMap采用这种方法......
  • C# StackExchange.Redis 用法总结
    阅读目录安装 StackExchange.Redis引用及初始化String(字符串)List(列表)Hash(哈希)发布订阅事务Batch批量操作Lock(分布式锁)StackExchange.Redis封装安装 St......
  • redis hash类型操作
    Redis-Hash前言hash在很多编程语言中都有着很广泛的应用,而在Redis中也是如此,在redis中,哈希类型是指Redis键值对中的值本身又是一个键值对结构,形如value=[{field1,value1},......
  • Redis - 对象结构
    简介Redis使用对象存储数据库中的键和值,每当在Redis中创建一个新的键值对时,都会创建两个对象:一个是键对象,另一个是值对象。其中,Redis的每种对象都由对象结构和对应......
  • 2023-03-27 哈希表
    哈希表1哈希表基础以LeetCode387号问题为例/************************************************************@Description:LeetCode387号问题*https://leetcod......
  • Redis进阶系统学习2——Redis数据操作
    第二部分:Redis数据操作Redis官网全部命令:https://redis.io/commandsRedis命令参考中文网:http://doc.redisfans.com/下面主要介绍一些常用数据操作命令6.键命令查看所有键......
  • HashTable源码分析
    HashTable是一个线程安全的HashMap,是jdk早期版本的产物,但其效率较低1.初始化可以看到,与HashMap不同,HashTable无参构造是默认会构造一个容量为11的数组,而HashMap在无参......
  • Redis面试题-1
    Redis基础面试题1、为什么要使用Redis做缓存缓存的好处使用缓存的目的就是提升读写性能。而实际业务场景下,更多的是为了提升读性能,带来更好的性能,带来更高的并发量。Redis......
  • 我想用gin开发一个使用redis和数据库的系统。 我应该如何进行架构设计?
    在设计使用Redis的系统和使用Gin的数据库时,需要牢记几个架构注意事项。这是一个可能的架构设计:API层:API层处理传入的请求并提供响应。该层负责验证输入、验证用户......
  • windows下通过redis-cli查看中文乱码
    参考:https://zhuanlan.zhihu.com/p/592166597redis数据进制问题的解决redis会将存储的中文数据转成16进制,所以我们在连接控制台的时候将redis-cli改为redis-cli--ra......