Redis里哈希表怎么快速拿到某一列的值,简单又实用方法分享
- 问答
- 2026-01-07 23:01:03
- 9
说到Redis里的哈希表,其实就是一种用来存“对象”的好东西,比如你想存一个用户的信息,这个用户有姓名、年龄、城市等等,你就可以用一个哈希表来存,把这个用户的所有信息都归拢在一起,管理起来特别方便。
现在问题来了,怎么才能从这个“对象”里,又快又简单地只拿出其中一项呢?我只想知道这个用户的年龄,不想知道他的其他信息,这个方法其实特别直接,Redis早就给我们准备好了。
最核心、最常用的命令:HGET
这个命令的名字很简单,H代表Hash(哈希),GET就是获取,连起来就是“哈希获取”,用法也像它的名字一样直白。
具体怎么用呢?命令长这样:HGET key field
这里有两个关键点:
- key:就是你给这个整个哈希表起的名字,好比是那个用户的ID,
user:1001,你用这个key,就能在Redis里找到属于用户1001的那个哈希表。 - field:就是你想要拿的那个具体属性的名字,也叫“字段”。
age(年龄)、name(姓名)或者city(城市)。
举个例子,你就全明白了,假设我们在Redis里存了一个用户信息:
我们得先把数据存进去,可以用 HSET 命令:
HSET user:1001 name "张三" age 28 city "北京"
这行命令的意思是:在名叫 user:1001 的哈希表里,设置 name 字段的值为“张三”,age 字段的值为28,city 字段的值为“北京”。
数据存好了,如果我们想快速知道用户1001的年龄,只需要一行命令:
HGET user:1001 age
你向Redis发送这个命令后,它瞬间就会给你返回一个数字:28,看,就这么简单,你一下子就拿到了“年龄”这一列的值,整个过程非常快,因为Redis是基于内存的数据库,而且HGET命令的时间复杂度是O(1),也就是说,无论你这个哈希表里存了几千几万个字段,你取其中一个字段的速度都是一样快的,跟你从一本书的目录里直接翻到某一页的速度差不多,不需要一页一页去翻。
那如果想一次多拿几个字段呢?
有时候你可能贪心一点,不想只拿一个字段,想同时把姓名和城市都拿出来,但又不想拿全部,这时候用好几次HGET虽然也行,但有点麻烦,Redis提供了一个更省事的小技巧,叫 HMGET,这个M就是Multi(多个)的意思。
用法和HGET几乎一样,就是后面可以跟好几个你想要的字段名,还拿上面的例子说:
HMGET user:1001 name city
这条命令执行后,Redis会给你返回一个列表,里面按顺序包含着两个值:["张三", "北京"],你一次请求,就把两个字段的值都拿到了,减少了来回通信的次数,在某些网络环境下会显得更快。
什么时候该用HGET,什么时候该用HMGET?
这个选择很简单:
- 当你百分之百确定只需要一个字段的值时,用
HGET,最直接,最纯粹。 - 当你需要两个或更多个特定字段的值时,就用
HMGET,这样效率更高。 那有没有一种情况是,我想把整个哈希表里所有的字段和值都拿出来呢?也有对应的命令,叫HGETALL,但是要小心,如果你的哈希表非常大,字段特别多,使用HGETALL可能会一下子拿到很多数据,消耗比较多的网络带宽和处理时间,遵循一个原则:按需索取,你需要什么就拿什么,不需要的就不拿。HGET和HMGET正是这种“按需索取”思想的完美体现,也是它们为什么被称为快速又实用方法的原因。
总结一下
在Redis里要从哈希表中快速拿到某一列的值,根本不用想得太复杂,你就记住这两个命令:
- 单点获取用
HGET:HGET 哈希表名字 字段名 - 多点获取用
HMGET:HMGET 哈希表名字 字段名1 字段名2 ...
这就像是去超市买东西,你只买一瓶可乐,就直接走到饮料区拿一瓶结账(HGET);如果你想买可乐、薯片和面包,那就把这几个东西的名字一次性告诉售货员,让他帮你一起拿来(HMGET),肯定比你一样一样分开说要快,Redis的哈希表操作就是这么贴近直觉,简单又强大。

本文由邝冷亦于2026-01-07发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/76468.html
