如题所示,Redis 中 GET 和 HGET 到底谁更快?
据资料显示:
HGET:返回指定 Hash 中 field 字段的值,时间复杂度 O(1).
GET:获取某个 key 对应的 value ,时间复杂度 O(1).
问题来了:
都是 1000w 条数据,再不考虑内存的情况下谁更快呢?
1
falsemask 2023-02-07 17:11:14 +08:00
我觉得是 get ,hget 要算两次 hash
|
2
Mirana 2023-02-07 17:12:33 +08:00
get 啊
|
3
cco 2023-02-07 17:14:13 +08:00
肯定 get 啊。
|
5
wangxin3 2023-02-07 17:49:08 +08:00
我理解的。hget key fieldName 首先要从 redis 中找到这个 hash 表(这里 hash 表是 1000w 条数据),然后从 hash 表中取出指定 fieldName 的一条数据,虽然时 O(1),但是比 get 多了从 hash 表再取数据的操作。
|
6
fanchenio 2023-02-07 17:56:16 +08:00
hget ,首先得找到那个 map 吧,然后再去找 map 里的元素,get 直接提取就好了,hget 两个步骤,get 一个步骤,个人感觉,应该是 get 快吧。
|
7
imdgr886 2023-02-07 18:09:38 +08:00
有没有可能,get 比 hget 只快了 1% (瞎猜的),楼主如果有时间可以测试一下,搞点 mock 数据,用两个方法操作 10w 次
|
9
8355 2023-02-07 18:27:12 +08:00
get 是访问变量
hget 是访问数组 |
11
iweus 2023-02-08 11:03:08 +08:00
Redis 中的 GET 和 HGET 在性能上的差异取决于它们的使用场景。
GET 操作是从 Redis 键空间中获取字符串类型的键的值,它是 Redis 最基本的存储操作,并且比较快速。 HGET 操作是从 Redis 中的哈希表中获取字段的值,它的性能一般比 GET 慢一些,因为它需要进行额外的计算,以确定哈希表中存储的位置。 因此,如果您需要从 Redis 中快速获取字符串类型的键,那么 GET 操作是一个更好的选择,如果您需要从 Redis 哈希表中获取字段的值,则 HGET 操作是一个更好的选择。 来自 chatGPT 的回答 |