新闻详情

新闻详情

首页 / 资讯中心 / 详情

Redis命令:HGETEX

发布时间:2026/11/10 0:53:59来源:尧图网络
Redis命令:HGETEX
Redis HGETEX 命令详细教程HGETEX读取 Hash 中一个或多个字段的值并可在同一条命令中设置或清除这些字段的过期时间。它从 Redis 8.0.0 起提供是“读取加续期”的原子组合。资料合集https://pan.quark.cn/s/10e98d308913、https://pan.quark.cn/s/f56bc69c5338一、概览与语法HGETEX key [EX seconds | PX milliseconds | EXAT unix-time-seconds | PXAT unix-time-milliseconds | PERSIST] FIELDS numfields field [field ...]项目说明数据类型Hash支持版本Redis 8.0.0 起key一个 Hash Key过期选项EX、PX、EXAT、PXAT、PERSIST 五者最多选一也可以完全不写FIELDS必填关键字不可省略numfields字段数量必须与后续字段参数个数一致返回值值数组顺序与输入字段一致缺失字段对应空值时间复杂度O(N)N 为指定字段数量ACLwrite、hash、fast命令标记write不写任何过期选项时HGETEX 的行为接近按指定字段读取不修改任何 TTL。命令会修改字段的过期时间因此被标记为写命令不能用在只读副本或只读连接上。$TRAE_REF二、过期选项语义五个选项互斥不能组合使用。选项含义EX seconds从现在起经过指定秒数后到期PX milliseconds从现在起经过指定毫秒数后到期EXAT unix-time-seconds在指定 Unix 秒级时间戳到期PXAT unix-time-milliseconds在指定 Unix 毫秒级时间戳到期PERSIST移除字段已有的过期时间使其变为永久字段不写保持字段现有 TTL 不变EXAT 与 PXAT 的时间戳若已过去字段会立即被删除此时返回值仍然包含被删除前的值因为读取发生在删除之前。三、基础示例以下命令需要 Redis 8.0 或更新版本在测试实例的 redis-cli 中执行。文中结果是预期说明未实际连接 Redis 运行。DEL tutorial:{hgetex}:session HSET tutorial:{hgetex}:session token abc user u100 theme dark HGETEX tutorial:{hgetex}:session EX 120 FIELDS 1 token HGETEX tutorial:{hgetex}:session EX 100 FIELDS 1 user HTTL tutorial:{hgetex}:session FIELDS 3 token user theme HGETEX tutorial:{hgetex}:session FIELDS 2 theme absent HGETEX tutorial:{hgetex}:session PERSIST FIELDS 1 token HTTL tutorial:{hgetex}:session FIELDS 1 token预期结果前两次 HGETEX 分别返回[abc]与[u100]HTTL 返回形如[91, 85, -1]的数组token 与 user 是递减的剩余秒数theme 为 -1 表示没有 TTL不带选项的 HGETEX 返回[dark, nil]即 theme 的值与 absent 的空值且不改变任何 TTLPERSIST 后 token 的 HTTL 变为 -1。示例中的秒数会随执行时刻变化因此只描述形态不给出固定数字。四、不创建字段与空值处理HGETEX 是读取语义不会创建不存在的 Key 或字段也不会为缺失字段设置过期时间。缺失字段在返回值中占据一个位置内容为空值长度始终等于请求的字段数量。场景行为Key 不存在按输入字段数返回多个空值不创建 Key不设置任何 TTL字段不存在该项返回空值该字段不会被创建也不会产生 TTL字段值为空字符串返回空字符串字段存在可按选项设置 TTLKey 是 String、List 等非 Hash报 WRONGTYPE 错误选项写多个或未知选项报语法错误numfields 与实际字段数不符报语法错误只关心存在字段的续期时应先用 HEXISTS 过滤或接受缺失字段返回空值的事实。五、与相近命令的区别命令读取修改 TTL删除起始版本HGET单字段否否2.0HMGET多字段否否2.0HEXPIRE否是相对秒否7.4HPERSIST否清除否7.4HGETEX多字段是否8.0HGETDEL多字段否是8.0GETEX单 KeyString是否6.2HGETEX 可以看作 Hash 版本的 GETEX它把“取值”和“续期”合并避免先 HGET 再 HEXPIRE 的两次往返与竞态窗口。如果只是单纯读值、不需要改 TTL用 HMGET 更直观也不必让只读实例承担写命令。六、典型场景缓存命中续期滑动过期缓存是 HGETEX 最典型的使用方式命中时读取值并把 TTL 重置为完整周期未命中时由业务回源并重新写入。处理一次请求 1. HGETEX cache:{user}:profile EX 600 FIELDS 3 name level avatar 2. 若返回的值中包含空值说明对应字段缺失或已过期需要回源 3. 回源后使用 HSET 写入并配合 HEXPIRE 设置字段 TTL注意续期与回源不是同一个原子操作HGETEX 只保证“读取加续期”这一步原子回源与写回仍在命令之外多个并发请求可能同时回源。高并发场景可配合互斥锁或允许短暂重复回源。另外给字段设置 TTL 意味着字段会独立消失业务需要能容忍字段级的缺失而不是只依赖整个 Key 的过期。七、并发、原子性与重试HGETEX 对多个字段是原子执行的返回值来自执行瞬间的一致快照不会读到“改了一半”的 TTL 状态。但“先 HGETEX 判断再写入”仍是跨命令流程其他客户端可能在两次调用之间修改数据。使用相对时间选项EX、PX时重试会从新的时刻重新计时可能无意延长有效期需要固定截止时间时应使用 EXAT 或 PXAT。请求超时也不代表未执行重发前可先用 HEXPIRETIME 或 HTTL 检查字段当前状态。单条命令会一次性修改多个字段的 TTL字段数量多时注意控制批次大小避免单次请求过大。八、Python 客户端示例前提为已安装 redis-py 且服务端为 Redis 8.0 或更新版本。使用通用接口显式展示 FIELDS 语法。importredis rredis.Redis(hostlocalhost,port6379,decode_responsesTrue)ktutorial:{hgetex}:pythontry:r.delete(k)r.hset(k,mapping{token:abc,user:u100,theme:dark})print(r.execute_command(HGETEX,k,EX,120,FIELDS,1,token))# [abc]fields[token,theme,absent]valuesr.execute_command(HGETEX,k,FIELDS,len(fields),*fields)print(values)# [abc, dark, None]print(r.execute_command(HTTL,k,FIELDS,3,*fields))# [约120, -1, -2]print(r.execute_command(HGETEX,k,PERSIST,FIELDS,1,token))# [abc]print(r.execute_command(HTTL,k,FIELDS,1,token))# [-1]finally:r.delete(k)r.close()九、练习、排错与总结练习新建tutorial:{hgetex}:exercise写入 a1、b2执行HGETEX ... EX 300 FIELDS 2 a b预期返回1、2用 HTTL 确认两个字段都有正数剩余时间再执行HGETEX ... PERSIST FIELDS 1 a预期 HTTL 对 a 返回 -1最后执行HGETEX ... EXAT 1 FIELDS 1 b预期返回2但 b 随即被删除HEXISTS 为 0。排错要点unknown command 时确认服务端版本不低于 8.0报错时检查是否同时写了两个过期选项返回空值说明字段不存在或已过期可用 HEXISTS 与 HTTL 区分HTTL 返回 -1 表示字段永久有效-2 表示字段不存在写入后 TTL 意外消失检查是否随后用 HSET 覆盖了该字段。清理使用DEL tutorial:{hgetex}:session tutorial:{hgetex}:exercise。速记8.0 起支持、读取同时可选续期、五个过期选项互斥、不创建缺失字段、相对时间重试会重新计时。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/8 22:42:07

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/9 8:37:19

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/9 8:37:19

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/8 22:41:24

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/9 8:37:18

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/9 8:37:18

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉