You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单个Redis命令同时获取String与Hash类型的值?

如何用单个Redis命令同时获取String类型值和Hash字段值?

首先得明确:HMGET只能针对单个Hash键批量获取其下的多个字段值,没法跨类型操作String键,所以你用它肯定拿不到String类型的value1。

要实现单个命令同时获取不同类型键的值,最通用的方案是用Redis的EVAL执行Lua脚本——Lua脚本可以在Redis中原子性地执行多个命令,一次性返回组合结果。

具体实现

执行以下命令即可同时获取key1的String值和key3中field3的Hash值:

EVAL "return {redis.call('GET', KEYS[1]), redis.call('HGET', KEYS[2], ARGV[1])}" 2 key1 key3 field3
  • 脚本逻辑:调用GET获取String键值,调用HGET获取Hash字段值,最后把两个结果打包成数组返回
  • 参数说明:2表示后面有2个键参数(key1、key3),ARGV[1]对应传入的field3

执行后Redis会返回类似["value1", "value3"]的结果,顺序和脚本中调用命令的顺序一致。

补充说明

  • 这个方法是原子性的:Lua脚本在Redis中是单线程执行的,执行过程不会被其他命令打断,避免了多命令执行时的中间状态不一致问题
  • 如果需要重复执行这个逻辑,可以把脚本用SCRIPT LOAD加载到Redis,之后用EVALSHA调用脚本哈希值,减少每次传输脚本的开销

内容的提问来源于stack exchange,提问作者RRS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 07:25:54