Redis数据类型 - 散列(Map)

article/2025/8/29 3:38:19

文章目录

  • 一、散列简介
  • 二、散列的基本操作
  • 三、散列与字符串比较
    • 1、散列键的优点
    • 2、字符串键的优点

一、散列简介

散列就是hash或者说Map,Redis的散列键会将一个键和一个散列在数据库中关联起来,可以在散列中设置任意多个字符串键值对,因此通常把相关联的多项数据存储在同一个散列中,以便对这些数据进行管理或执行相关操作。
在这里插入图片描述

二、散列的基本操作

  • 创建散列并设置值

可以通过HSET命令创建散列或者为散列中指定的字段设置值,创建散列时就必须设置key以及字段和字段值;
语法格式:HSET key field1 value1 field2 value2 … ,如

# 创建一个key为article.101的散列,
#并设置title字段值为redis cookbook,author字段值为someone
HSET article.101 title 'redis cookbook' author 'smoeone'

如果给定的key不存在,那么就是一次创建操作,创建成功后返回字段的数量;反之就是一次更新操作,更新成功后返回0。

和字符串的SET命令中NX可选项一样,散列存在HSETNX命令用于只在字段不存在的情况下为它设置值,HSETNX一次只可针对一个字段操作,也就是说HSETNX一次只能设置一个字段及值
如HSETNX article.101 views 20 publish ‘2021-02-02’ 就不会执行成功,
而HSETNX article.101 views 20 可以执行成功

除了HSET外,Redis也提供了HMSET命令用于一次为散列中的多个字段设置值

  • 获取散列中指定字段的值

HGET命令用于获取指定key 中的 指定字段的值,一次只能获取一个字段
语法格式:HGET key field, 如

# 获取articel.101中title字段的值
HGET articel.101 title

如果指定的字段在当前散列中不存在,HGET命令将返回一个空值。

与HMEST相对应,Redis也提供了HMGET命令用于一次获取多个字段的值

  • 对散列中存储的整数字段进行加减操作

如果散列中存在存储整数的字段,那么就可以使用HINCRBY命令为该字段的值加上指定的整数增量,
语法格式:HINCRBY key filed increment,如

# 对articel.101中views字段的值增加100
HINCRBY article.101 views 100

如果指定字段不存在,那么就会执行创建操作。

HINCRBY也可以用于执行减法操作,只需在操作数前加上负号,但操作数只能是整数,如

# 对articel.101中views字段的值减去10
HINCRBY article.101 views -10
  • 对散列中存储的浮点数字段进行加减操作

与INCRBYFLOAT类似的,Redis提供了HINCRBYFLOAT来对散列中存储的浮点数执行加减操作,如

# 对article.101中的price字段值增加99.8
HINCRBYFLOAT article.101 price 99.8# 对article.101中的price字段值减去9
HINCRBYFLOAT article.101 price -9
  • 获取散列中指定字段的值的长度

Redis中获取散列指定字段的值的长度命令与STRLEN类似,为HSTRLEN
语法格式:HSTRLEN key field,如

# 获取article.101中title字段值的长度
HSTRLEN article.101 title

如果给定的key不存在或字段不存在,HSTRLEN将返回0

  • 检测散列中是否存在指定字段

EXSITS命令可用于检查数据库中是否存在指定key,而HEXSITS则可用于检查散列中是否存在指定字段;
语法格式:HEXSITS key field,如

# 检查article.101中是否存在title字段
HEXSITS article.101 title
  • 删除散列中的指定字段

DEL命令可用于删除指定key,而HDEL命令可用于删除散列中的指定字段及其关联的值;
语法格式: HDEL key field,如

#删除article.101中的title
HDEL article.101 title

当删除成功时,HDEL命令返回1,如果散列中并不存在给定字段那么命令将返回0表示删除失败。

  • 获取散列的所有字段、所有值、所有字段和值

Redis为散列提供了HKEYS、HVALS、HGETALL这三个命令,可以分别用于获取散列包含的所有字段、所有值以及所有字段和值,如

# 获取article.101的所有字段
HEYS article.101
# 获取article.101的所有值
HVALS article.101
# 获取article.101的所有字段和值
HGETALL article.101

三、散列与字符串比较

在这里插入图片描述
在这里插入图片描述

1、散列键的优点

为了对数据库以及数据库的使用情况进行统计,Redis会为每个数据库键存储一些额外的信息,因此会带来一些额外的内存消耗,当数据库键数量达到百万级时,这些额外的内存消耗就会变得很多。

当散列包含的字段数量比较少的时候,Redis就会使用特殊的内存优化结构去存储散列中的字段和值。与字符串键相比,这种内存优化结构存储相同数据所需要的内存要少的多。因此对于相同的数据,使用散列键进行存储比使用字符串键存储要节约一半以上的内存。

除了需要耗费更多内存之外,更多的数据库键也需要占用更多的CPU,每当Redis需要对数据库中的键进行处理时,数据库包含的键越多,进行处理所需的CPU资源就会越多。

除了资源方面的优势外,散列键还可以有效地组织起相关的多项数据,让程序产生更容易理解的数据,以及操作更方便。

2、字符串键的优点

字符串键比起散列键结构简单,操作也更加灵活,比如,字符串能够使用SETRANGE命令和GETRANGE命令设置或读取字符串值的其中一部分,或者使用APPEND命令将新内容追加到字符串值的末尾,而散列键并不支持这些操作。

Redis支持数据设置过期时间,但是是针对key的,并不能对散列中的字段设置过期时间,所以当一个散列键过期的时候,它所包含的所有字段和值都将被删除。

在这里插入图片描述


http://chatgpt.dhexx.cn/article/PTjmHZ6l.shtml

相关文章

redis数据类型插入输出命令

进入客户机:redis-cli 中文字符不能显示:redis-cli --raw、get Course:1:Cname 一、redis数据类型数据的添加 1、String 添加数据:set StringTest(数据名称) “helloword”(数据) 显示数据:get StringTest(数据名称&am…

Redis数据类型及使用场景

转自: http://www.kubiji.cn/juhe-id7106.html Redis数据类型及使用场景 来源: WQTech阅读: 2936 时间:2 小时前 摘要:Redis相比其它的KV数据库,其一大特点是支持丰富的数据类型.它一共支持5种数据类型,下面逐一介绍这…

Redis数据类型与操作命令

1. 键值对数据库 1.1 redis数据结构 redis的数据是 key-value 形式的键值对,其中 key 其实都是字符串的形式,而 value 的数据类型,也就是数据的保存形式,底层实现的方式就用到了数据结构。 所以我们一直说的“redis五种数据结构…

Redis数据类型

文章目录 STRINGLISTSETHASHZSET Redis主要有5种数据类型,包括String,List,Set,Zset,Hash,满足大部分的使用要求,Redis各数据类型的使用场景可以参考Redis使用场景 数据类型可以存储的值操作ST…

redis数据类型(5种)和底层实现

redis数据类型(5种)和底层实现 Redis的特点 要用好Redis,首先要明白它的特点: 读写速度快。redis官网测试读写能到10万左右每秒。速度快的原因这里简单说一下,第一是因为数据存储在内存中,我们知道机器访问内存的速度是远远大于…

Redis数据类型及编码

Redis数据类型及编码 说到Redis的数据类型,我们大概会很快想到Redis的5种常见的数据类型:字符串(String)、列表(List)、散列(Hash)、集合(Set)、有序集合(Sorted Set),以及他们的特点和运用场景及常用命令。不过在讲五大数据类型之前&#x…

Redis 基础 -- Redis数据类型之set

文章目录 1. Redis数据类型之set1.1 set类型介绍1.2 set类型基本操作1.3 set 类型数据的扩展操作:获取随机的数据1.4 set 类型数据的扩展操作:集合的交、并、差集1.4.1 sinter命令1.4.2 sunion命令1.4.3 sdiff命令1.4.4 sinterstore命令1.4.5 sunionstor…

Redis 数据类型

1、string类型 (1)存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型。 string,他就是存一个字符串儿,注意是value那一部分是一个字符串,它是redis中最基本、最…

NoSQL数据库之Redis(三):常用五大数据类型

目录 Redis键(key)常用命令 Redis字符串(String)常用命令原子性数据结构 Redis列表(List)常用命令数据结构 Redis集合(Set)常用命令数据结构 Redis哈希(Hash)常用命令数据结构 Redis有序集合Zset(sorted set)常用命令数据结构跳跃表(跳表) redis常见数据…

redis的五种数据类型

🏆作者简介:哪吒,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家💪 ,专注Java硬核干货分享,立志做到Java赛道全网Top N。 🏆本文收录于,Java基础教程系列,目前已经700+订阅,CSDN最强Java专栏,包含全部Java基础知识点、Java8新特性、…

Redis 的五种基本数据类型

一、String 类型 1.1 介绍 String 类型,也就是字符串类型,是 Redis 中最简单的存储类型。其 value 是字符串,不过根据字符串的格式不同,又可以分为 3 类: string:普通字符串int:整数类型&…

【Redis学习】Redis10大数据类型

总体概述 这里说的数据类型是value的数据类型,key的类型都是字符串。 redis字符串(String) string是redis最基本的类型,一个key对应一个Tvalue。 string类型是二进制安全的,意思是redis的string可以包含任何数据&am…

【Redis7学习日记】—— Redis十大数据类型

一、十大类型概述 首先,我们要知道此处的数据类型指的是 value 的类型,Redis 的 key 都是字符串类型我们通过一张图,先大致了解一下这些数据结构的样子 1.1 String 类型 String 是 Redis 中最基本的数据类型,一个 key 对应一个…

Redis的8种数据类型

目录 一、概述 1、redis是什么 2、redis能干嘛 3、redis常识 3.1、基本命令 3.2、为什么redis是单线程 二、五大数据类型 1、String 2、List列表 3、Set 4、Hash 5、Zset有序集合 三、三种特殊数据类型 1、geospatial地理位置 2、hyperloglog 3、bitmaps 一、概述…

Redis五种基本数据类型

五种基本数据类型 redis无论什么数据类型,在数据库中都是以key-value形式保存,并且所有的key(键)都是字符串,所以讨论基础数据结构都是讨论的value值的数据类型 主要包括常见的5种数据类型,分别是:String、List、Set、…

离散数学课后习题答案 左孝凌版

离散数学课后习题答案(左孝凌版) ,部分截图如下 太多了,就不在一一复制,可以扫描最上面的二维码,关注微信公众“数据结构和算法”,回复离散数学的拼音简称lssx即可获得下载地址

离散数学实验三 · 最短路径计算

一、实验目的 通过本实验的学习理解Dijkstra算法,并且编码实现最短路径问题。 二、实验内容 Dijkstra算法的理解; 算法概念:设G(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合&…