“深入了解Redis缓存:探索Redis 6的新数据类型“

目录

1. 介绍

2. Bitmaps(可以称为字符串,专门进行位操作的字符串)

2.1 概念

2.2 setbit(设置Bitmaps中某个偏移量的值)

2.3 getbit(获取Bitmaps中某个偏移量的值)

2.4 bitcount(统计字符串被设置为1的bit数,访问过的用户为1,没有访问过的为0)

2.5 bitop(复合操作,将多种情况的操作结果保存在destkey中)

3. HyperLogLog(做基数处理,去重等..)

3.1 概念

3.2 pfadd(添加指定元素到HyperLogLog中)

3.3 pfcount(计算HLL的近似基数)

3.4 pfmerge(合并其它的key,进行计算等)

4. Geospatial(对经纬度,地理信息等操作)

4.1 概念

4.2 geadd(添加地理位置)

4.3 geopos(获取指定地区的坐标值)

4.4 geodist(获取两个位置之间的直线距离)

4.5 georadius(以给定的经纬度为中心,找出某一半径内的元素)


1. 介绍

在Redis 6中,有几种比较特殊且功能强大的数据结构:Bitmaps(位图)、HyperLogLog(超级对数日志)、Geospatial(地理空间)

1. Bitmaps(位图):

  • 作用:Bitmaps 是 Redis 中的一种非常紧凑和高效的数据结构,用来处理位操作相关的需求。
  • 用途:主要用于记录某些状态或者事件是否发生过,例如用户是否点击过某个按钮、某天是否有用户访问网站等。因为它可以节省大量内存,特别适合于需要高效率地记录大量布尔型状态的场景。

2. HyperLogLog(超级对数日志):

  • 作用:HyperLogLog 是一种概率性数据结构,用于统计元素的基数(唯一元素的数量),占用固定大小的内存空间。
  • 用途:适合于需要快速估计大数据集合中的唯一元素数量,例如统计网站的独立访客数、统计一周内不同IP地址访问网站的数量等。

3. Geospatial(地理空间):

  • 作用:Geospatial 是 Redis 提供的一种处理地理位置和坐标的数据结构,可以存储地理位置的经度和纬度,并支持相关的地理位置查询操作。
  • 用途:适合于需要存储和查询地理位置信息的应用场景,如附近的商家搜索、地点推荐等。

2. Bitmaps(可以称为字符串,专门进行位操作的字符串)

2.1 概念
  • Bitmaps本身不是数据类型,他只是字符串,专门进行位操作的字符串;

Bitmaps与set的区别:

提高了空间利用率,提高了cpu内存的利用率;

对比 setBitmaps 在存储独立用户空间方面的差异:

  • setBitmaps 存储独立用户空间对比
数据类型一天一个月一年
set400MB12GB144GB
Bitmaps12.5MB375MB4.5GB
  • 备注
    • Bitmaps 并不是万能的。如果网站每天的独立访问用户很少(例如只有 10 万,大量的僵尸用户),则对比情况如下。
    • Bitmaps 在用户数量少的情况下不太适合,因为这时候大部分位都是 0,使其不太高效。
2.2 setbit(设置Bitmaps中某个偏移量的值)
  • SETBIT 命令用于设置 Bitmaps 中某个偏移量的值,可以将指定位置的位设置为 0 或 1;
    • <key>: Bitmaps 的键
    • <offset>: 偏移量,从 0 开始
    • <value>: 设置的值,只能是 0 或 1
SETBIT <key> <offset> <value>
# 设置键 `userbitmap` 在偏移量 5 处的位值为 1
127.0.0.1:6379> SETBIT userbitmap 5 1
(integer) 0# 设置键 `userbitmap` 在偏移量 10 处的位值为 1
127.0.0.1:6379> SETBIT userbitmap 10 1
(integer) 0# 设置键 `userbitmap` 在偏移量 5 处的位值为 0
127.0.0.1:6379> SETBIT userbitmap 5 0
(integer) 1
2.3 getbit(获取Bitmaps中某个偏移量的值)
  • GETBIT 命令用于获取 Bitmaps 中某个偏移量的值,返回该位的值(0 或 1);
    • <key>: Bitmaps 的键
    • <offset>: 偏移量,从 0 开始
GETBIT <key> <offset>
# 获取键 `userbitmap` 在偏移量 5 处的位值
127.0.0.1:6379> GETBIT userbitmap 5
(integer) 0# 获取键 `userbitmap` 在偏移量 10 处的位值
127.0.0.1:6379> GETBIT userbitmap 10
(integer) 1# 获取键 `userbitmap` 在偏移量 15 处的位值
127.0.0.1:6379> GETBIT userbitmap 15
(integer) 0
2.4 bitcount(统计字符串被设置为1的bit数,访问过的用户为1,没有访问过的为0)
  • BITCOUNT 命令用于统计 Bitmaps 中被设置为 1 的位的数量。该命令可以统计整个 Bitmaps 的 1 位数,也可以通过指定 startend 参数来统计特定范围内的 1 位数;
    • <key>: Bitmaps 的键
    • [start] (可选): 开始的字节下标,负数表示从末尾开始计算
    • [end] (可选): 结束的字节下标,负数表示从末尾开始计算
BITCOUNT <key> [start end]
# 统计键 `userbitmap` 中所有被设置为 1 的位的数量
127.0.0.1:6379> BITCOUNT userbitmap
(integer) 2
# 统计键 `userbitmap` 在字节 0 到字节 1 范围内被设置为 1 的位的数量
127.0.0.1:6379> BITCOUNT userbitmap 0 1
(integer) 1# 统计键 `userbitmap` 在最后 2 个字节范围内被设置为 1 的位的数量
127.0.0.1:6379> BITCOUNT userbitmap -2 -1
(integer) 1
2.5 bitop(复合操作,将多种情况的操作结果保存在destkey中)
  • BITOP 命令用于对多个 Bitmaps 进行位运算,包括 AND(交集)、OR(并集)、NOT(非)、XOR(异或)操作,并将结果存储在 destkey 中;
    • <operation>: 运算类型,可以是 ANDORNOTXOR
    • <destkey>: 结果存储的目标键
    • <key>: 输入的源键,可以有一个或多个
BITOP <operation> <destkey> <key> [key...]
  • 操作类型:
    • AND: 交集(所有键中对应位都为 1,则结果位为 1)
    • OR: 并集(至少一个键中对应位为 1,则结果位为 1)
    • NOT: 非(键中对应位取反,NOT 只能有一个源键)
    • XOR: 异或(键中对应位不同则结果位为 1)
# 计算键 `bitmap1` 和 `bitmap2` 的位交集,结果存储在 `result`
127.0.0.1:6379> BITOP AND result bitmap1 bitmap2
(integer) <result-length>
# 计算键 `bitmap1` 和 `bitmap2` 的位并集,结果存储在 `result`
127.0.0.1:6379> BITOP OR result bitmap1 bitmap2
(integer) <result-length>
# 计算键 `bitmap1` 的位取反,结果存储在 `result`
127.0.0.1:6379> BITOP NOT result bitmap1
(integer) <result-length>
# 计算键 `bitmap1` 和 `bitmap2` 的位异或,结果存储在 `result`
127.0.0.1:6379> BITOP XOR result bitmap1 bitmap2
(integer) <result-length>

3. HyperLogLog(做基数处理,去重等..)

  • Redis 提供了三种主要的 HyperLogLog 操作命令:PFADDPFCOUNTPFMERGE。这些命令允许我们高效地执行基数估计、添加元素、统计唯一元素数量、以及合并多个 HyperLogLog;
3.1 概念
  • 在现代应用中,统计数据的基数(Unique Visitors,独立 IP 数,等)是常见需求。传统方法精确但耗费内存大,而 Redis 提供的 HyperLogLog 可以在较低的空间占用下高效估计集合的基数;
  • 基数是集合中不重复元素的个数:数据集 {1, 3, 5, 7, 5, 7, 8},其基数集为 {1, 3, 5, 7, 8},基数为 5;
  • 空间效率: 固定使用约 12 KB 内存;
  • 适用场景: 处理大规模数据集,允许少量误差;
  • 特点
    • 不存储实际元素,仅用于基数估计;
    • 可处理多达 2642^{64}2​64​​ 个不同元素;
3.2 pfadd(添加指定元素到HyperLogLog中)
  • PFADD 命令用于向 HyperLogLog 中添加元素。如果这些元素是新出现的(即之前没有添加过),HyperLogLog 的估计基数将增加;
    • <key>: HyperLogLog 的键
    • <element>: 要添加的元素,可以是一个或多个
PFADD <key> <element> [element ...]
  • 如果 HyperLogLog visitors 中没有这些元素,它会更新并增加基数估计:
# 添加用户 user1, user2, user3 到 HyperLogLog `visitors`
127.0.0.1:6379> PFADD visitors user1 user2 user3
(integer) 1  # 1 表示基数发生了变化
3.3 pfcount(计算HLL的近似基数)
  • PFCOUNT 命令返回 HyperLogLog 中估计的唯一元素数量。可以对单个或多个 HyperLogLog 进行基数估计;
    • <key>: HyperLogLog 的键,可以是一个或多个;
PFCOUNT <key> [key ...]
  • (integer) 表示估计的唯一元素数量:
# 统计 HyperLogLog `visitors` 中的唯一元素数量
127.0.0.1:6379> PFCOUNT visitors
(integer) 3  # 估计的唯一元素数# 统计多个 HyperLogLog `visitors1`, `visitors2` 的合并基数
127.0.0.1:6379> PFCOUNT visitors1 visitors2
(integer) 5  # 合并估计的唯一元素数
3.4 pfmerge(合并其它的key,进行计算等)
  • PFMERGE 命令将多个 HyperLogLog 合并为一个目标 HyperLogLog。合并后的结果保存在指定的目标键中;
    • <destkey>: 目标 HyperLogLog 的键
    • <sourcekey>: 源 HyperLogLog 的键,可以是一个或多个
PFMERGE <destkey> <sourcekey> [sourcekey ...]
  • 合并后的 total_visitors 将包含 visitors1visitors2 的所有元素,并估计其总的唯一元素数量;
    • 返回值: OK 表示操作成功
# 合并 HyperLogLog `visitors1`, `visitors2` 到 `total_visitors`
127.0.0.1:6379> PFMERGE total_visitors visitors1 visitors2
OK

4. Geospatial(对经纬度,地理信息等操作)

4.1 概念
  • Redis 3.2 中增加了对 GE0 类型的支持。GE0,Geographic,地理信息的缩写。该类型,就是元素的 2维坐标,在地图上就是经纬度。redis 基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度 Hash 等常见操作;
  • 地理空间数据存储方式
    • Redis 使用有序集合(Sorted Set)来存储地理空间数据。
    • 每个成员(member)都有一个关联的分数(score),这个分数用来排序,通常用来表示成员的位置。
  • 地理位置表示
    • 每个地理位置通过经度(longitude)和纬度(latitude)来表示。
    • Redis 使用二维平面坐标系来存储这些位置信息。
  • 地理位置的索引
    • 有序集合中的每个成员是一个地理位置的标识符,可以是任意字符串。
    • 每个成员都有一个对应的地理坐标(经纬度),以及用来排序的分数。
4.2 geadd(添加地理位置)
  • GEADD 是一个用于向地理空间索引(Geo Index)添加成员的命令,它可以将带有经度和纬度信息的成员添加到指定的地理位置集合(GeoSet)中;
    • <key>: 地理位置集合(GeoSet)的键名。
    • <longitude>: 成员的经度。
    • <latitude>: 成员的纬度。
    • <member>: 要添加的成员名称。
GEADD <key> <longitude> <latitude> <member> [longitude latitude member...]
  • 添加单个成员:
GEADD cities 13.361389 38.115556 "Palermo"
  • 添加多个成员:
GEADD cities 15.087269 37.502669 "Catania" 13.361389 38.115556 "Palermo"
  • 注意事项:
    • GEADD 命令会创建地理位置集合(如果它不存在),并将指定的成员添加到集合中。
    • 成员的经度和纬度需要是有效的浮点数值。
    • 成员名称可以是任何字符串,但必须唯一标识该成员。
4.3 geopos(获取指定地区的坐标值)
  • GEOPOS 是用于获取地理位置集合(GeoSet)中成员的经度和纬度信息的命令。它可以用来查询指定成员在地理位置集合中的坐标信息;
    • <key>: 地理位置集合(GeoSet)的键名。
    • <member>: 要查询坐标信息的成员名称。
GEOPOS <key> <member> [member...]
  • 返回值:

    如果指定的成员存在于地理位置集合中,GEOPOS 返回一个数组,每个成员的坐标用一个两元素的数组表示 [longitude, latitude]。如果成员不存在于集合中,返回 nil

  • 查询单个成员的坐标:
GEOPOS cities "Palermo"
假设 "Palermo" 的坐标是 `[13.361389, 38.115556]`,则命令返回:
1) 1) "13.361389"2) "38.115556"
  • 查询多个成员的坐标:
GEOPOS cities "Palermo" "Catania"
假设 "Palermo" 的坐标是 `[13.361389, 38.115556]`,"Catania" 的坐标是 `[15.087269, 37.502669]`,则命令返回:
1) 1) "13.361389"2) "38.115556"
2) 1) "15.087269"2) "37.502669"
  • 注意事项:
    • GEOPOS 返回的坐标是以字符串形式表示的浮点数,分别代表经度和纬度。
    • 如果查询的成员不存在于地理位置集合中,返回 nil
    • GEOPOS 命令可以用于单个成员或多个成员的查询,允许一次性获取多个成员的坐标信息。
4.4 geodist(获取两个位置之间的直线距离)
  • GEODIST 是用于计算地理位置集合(GeoSet)中两个成员之间距离的命令。它能够返回成员之间的距离,单位默认为米(meters),或者可以通过选项指定为其他单位(如千米、英里等);
    • <key>: 地理位置集合(GeoSet)的键名。
    • <member1>: 第一个成员的名称。
    • <member2>: 第二个成员的名称。
    • [unit]: (可选)距离的单位,可选项包括:
      • m: 米(默认)
      • km: 千米
      • mi: 英里
      • ft: 英尺
GEODIST <key> <member1> <member2> [unit]
  • 返回值:

    如果两个成员都存在于地理位置集合中,GEODIST 返回这两个成员之间的距离。如果其中一个或两个成员不存在于集合中,返回 nil

  • 假设有以下数据:

    • 商店 A 的经纬度为 (13.361389, 38.115556)
    • 商店 B 的经纬度为 (15.087269, 37.502669)
GEODIST stores "storeA" "storeB" km
这表示商店 A 和商店 B 之间的距离是 163.8964 千米:
127.0.0.1:6379> GEODIST stores "storeA" "storeB" km
"163.8964"
4.5 georadius(以给定的经纬度为中心,找出某一半径内的元素)
  • GEORADIUS 是 Redis 中用于根据给定的经纬度和半径查找地理位置元素的命令;
GEORADIUS key longitude latitude radius unit [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
- `key`: Redis 中存储地理位置数据的键名。
- `longitude` 和 `latitude`: 给定的中心点经纬度,用于确定搜索的中心。
- `radius`: 搜索半径,可以是以 `m` (米), `km` (千米), `ft` (英尺), `mi` (英里) 为单位的浮点数。
- `unit`: 单位参数,指定 `radius` 的单位,可以是 `m` (米), `km` (千米), `ft` (英尺), `mi` (英里)。
- `WITHCOORD`: 返回每个位置元素的经纬度。
- `WITHDIST`: 返回每个位置元素与中心点的距离。
- `WITHHASH`: 返回每个位置元素的 geohash 值。
- `COUNT count`: 指定返回的最大元素数量。
- `ASC|DESC`: 结果的排序方式,按距离升序或降序排列。
- `STORE key`: 将结果存储到指定键名的有序集合中。
- `STOREDIST key`: 将结果存储到指定键名的有序集合中,并且同时存储每个位置元素与中心点的距离。
  • 假设我们有一个名为 stores 的 Redis 地理位置集合,其中存储了不同商店的经纬度信息。我们可以使用 GEORADIUS 命令来查找以某一经纬度为中心,半径内的商店。
    • 例如,假设要查找以经度 13.361389 和纬度 38.115556 为中心,半径 2000 米内的商店,并返回商店的经纬度和距离:
    • 这将返回半径 2000 米内所有商店的经纬度和它们与中心点的距离。
GEORADIUS stores 13.361389 38.115556 2000 m WITHCOORD WITHDIST
- 返回结果:
1) 1) "storeA"2) 1) "13.36138933897018433"2) "38.11555639549629859"3) "100.0"    // 与中心点的距离,单位由 WITHDIST 参数决定
2) 1) "storeB"2) 1) "13.35622221279144287"2) "38.12111264686523257"3) "190.0"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/857200.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】神经网络回归预测模型,Python代码实现

场景描述&#xff1a;基于物联网检测设备&#xff0c;大量采集流量数据和液位高度数据存储在时序数据库(influxdb)中。并采用下面代码对数据进行预测 #!/usr/bin/env python # -*- coding: UTF-8 -*- # Author:李智敏 # Wechat:anark919 # Date:2024-01-05 10:17 # Title: imp…

【C语言】16.动态内存管理

文章目录 1.为什么要有动态内存分配2.malloc和free2.1 malloc2.2 free 3.calloc和realloc3.1 calloc3.2 realloc 4.常见的动态内存的错误4.1 对NULL指针的解引⽤操作4.2 对动态开辟空间的越界访问4.3 对⾮动态开辟内存使⽤free释放4.4 使⽤free释放⼀块动态开辟内存的⼀部分4.5…

Golang - 连接MySQL执行查询脚本

脚本如下&#xff0c;简单易用&#xff1a; package mainimport ("fmt""gorm.io/driver/mysql""gorm.io/gorm" )type BaseID struct {ID int64 gorm:"primaryKey" json:"id" }type Tasks struct {BaseIDUUID string…

初识 GPT-4 和 ChatGPT

文章目录 LLM 概述理解 Transformer 架构及其在 LLM 中的作用解密 GPT 模型的标记化和预测步骤 想象这样⼀个世界&#xff1a;在这个世界里&#xff0c;你可以像和朋友聊天⼀样快速地与计算机交互。那会是怎样的体验&#xff1f;你可以创造出什么样的应用程序&#xff1f;这正是…

【PS】提取手写签名

准备工具&#xff1a; 纸张&#xff1a;用于承载签名&#xff1b; 笔&#xff1a;用于签名&#xff1b; 手机&#xff1a;用于拍摄签名&#xff1b; Adobe Photoshop 版本: 12.0.3 (12.0.3x20101211 [20101211.r.1222 2010/12/11:02:00:00 cutoff; r branch]) x32&#xff1a;用…

亚足联官方公布18强赛抽签时间及规则,国足确认位列第五档,你们觉得国足能进世界杯吗?

亚足联官方公布18强赛抽签时间及规则&#xff0c;国足确认位列第五档&#xff0c;你们觉得国足能进世界杯吗&#xff1f; 今天亚足联官方宣布了世预赛18强赛分组抽签仪式时间&#xff0c;本次抽签仪式将于6月27日15点在马来西亚吉隆坡举行。除了抽签时间之外&#xff0c;足联还…

IMU用于飞行坐姿校正

为了提升长途飞行的舒适度并预防乘客因不良坐姿导致的身体不适&#xff0c;来自荷兰上海两所大学的研究团队携手开发出一种创新的“舒适穿戴”设备&#xff0c;专为识别飞行中的坐姿设计。 研究团队制作了两种原型设备&#xff1a;一种追求极致舒适&#xff0c;另一种为紧身设…

FFmpeg源码:AV_RB32宏定义分析

一、AV_RB32宏定义的作用 AV_RB32是FFmpeg源码中经常出现的一个宏&#xff0c;其定义如下&#xff1a; #ifndef AV_RB32 # define AV_RB32(p) AV_RB(32, p) #endif 该宏定义有多层。把它简化为函数&#xff0c;其函数声明可以等价于&#xff1a; uint32_t AV_RB32(uint…

windows下 nodejs升级版本

使用n升级node,需要安装git或安装linux支撑组件&#xff0c;后来在网上找资料 直接下载node.exe覆盖原文件即可。 升级步骤如下&#xff1a; 1.查看当前node版本 node -v 2.下载相应版本的nodejs,网址是nodejs下载&#xff0c;找个你想要的版本下载node.exe 3.找到你node的安装…

在C#中对 JSON进行序列化和反序列化处理

概述&#xff1a;在现代软件开发领域&#xff0c;不同系统和平台之间的数据交换是不可或缺的方面。JSON&#xff08;JavaScript 对象表示法&#xff09;因其轻量级、人类可读和易于解析的特性而成为一种无处不在的数据格式。使用 C# &#x1f680;编程的 JSON 序列化和反序列化…

Scala学习笔记14: 模式匹配和样式类

目录 第十四章 模式匹配和样式类1- 模式匹配2- 模式中的变量3- 类型模式4- 匹配数组、列表和元组等集合5- 样例类6- 守卫7- 提取器8- 变量声明中的模式9- for推导式中的模式end 第十四章 模式匹配和样式类 在Scala中, 模式匹配和样例类是强大的功能, 用于处理复杂的数据结构和…

虚拟现实(VR)游戏与增强现实(AR)游戏的区别

随着科技的飞速发展&#xff0c;沉浸式游戏体验已经成为现代娱乐的重要组成部分。虚拟现实&#xff08;VR&#xff09;游戏和增强现实&#xff08;AR&#xff09;游戏是这类体验中的两大主流&#xff0c;但它们在技术实现、用户体验和应用场景上有显著的区别。本文将详细探讨VR…

Java 从 6 到 21 的重要变动回顾

Java 从 6 到 21 的重要变动回顾 Java 自从发布以来&#xff0c;一直是全球最受欢迎的编程语言之一。其不断发展的特性和功能&#xff0c;使得它在各种应用程序中得以广泛应用。从 Java 6 到 Java 21&#xff0c;Java 语言和平台经历了许多重要的变动。本文将深入探讨这些变动…

可信启动Trusted Board Boot

TBB Trusted Board Boot&#xff08;TBB&#xff09;对所有固件镜像&#xff08;包括普通世界的bootloader&#xff09;进行身份验证&#xff0c;以防止恶意固件在平台上运行。TBB使用公钥加密标准 &#xff08;PKCS&#xff09;来建立信任链&#xff08;Chain of Trust&#…

EtherCAT扫盲,都是知识点

1. 什么是EtherCAT EtherCAT&#xff0c;全称Ethernet for Control Automation Technology&#xff0c;字面意思就是用于控制自动化技术的以太网。它是一种基于以太网的实时工业通信协议&#xff0c;简单说&#xff0c;就是让机器们通过网线互相聊天的高级方式。 EtherCAT 是最…

项目训练营第三天

项目训练营第三天 注册登录测试 前面我们编写了用户注册、登录的逻辑代码&#xff0c;每编写完一个功能模块之后&#xff0c;我们都要对该模块进行单元测试&#xff0c;来确保该功能模块的正确性。一般情况下使用快捷键Ctrl Shift Insert&#xff0c;鼠标左击类名可以自动生…

全新的会声会影2024最新官方免费永久破解版本下载

大家好&#xff01;&#x1f31f; 今天要跟大家分享一个超级棒的视频编辑软件&#xff0c;它就是全新的会声会影2024最新永久破解版本。作为视频创作爱好者的我&#xff0c;真的被这款软件的强大功能和便利性彻底征服了&#xff01;&#x1f389;&#x1f389;&#x1f3ac; 【…

Aidlux 1.4 部署Nextcloud 2024.6实录 没成功

Aidux阉割版Debain10&#xff0c;坑很多&#xff0c;比如找不到实际的系统日志&#xff0c;有知道的大神吗&#xff1f; 1 Apache2安装 # 测试Apache2 sudo apt update && sudo apt upgrade sudo apt install apache2 -y80端口疑似被禁止只能换端口 rootlocalhost:/…

网络爬虫requests库使用指南

目录 引言 安装requests库 基本用法 发送GET请求 发送POST请求 处理请求头和Cookies 设置请求头 使用Cookies 会话管理 异常处理 流式上传和下载 结语 引言 在Python中进行HTTP请求时&#xff0c;requests库是一个强大且易于使用的第三方库。它允许你发送各种HTTP请…

Java中如何处理异常?

在Java中处理异常是确保软件健壮性和提高代码质量的重要手段。以下是Java异常处理的一些关键点和最佳实践&#xff1a; 1&#xff1a;理解异常类型&#xff1a; Java中的异常分为检查异常&#xff08; checked exceptions&#xff09;和非检查异常&#xff08;un-checked exc…