V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cmhonker
V2EX  ›  Redis

Redis 中 get 和 hget 到底谁更快?

  •  
  •   cmhonker · 2023-02-07 16:43:33 +08:00 · 3552 次点击
    这是一个创建于 659 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题所示,Redis 中 GET 和 HGET 到底谁更快?

    据资料显示:

    HGET:返回指定 Hash 中 field 字段的值,时间复杂度 O(1).
    GET:获取某个 key 对应的 value ,时间复杂度 O(1).

    问题来了:

    都是 1000w 条数据,再不考虑内存的情况下谁更快呢?

    11 条回复    2023-02-08 11:03:08 +08:00
    falsemask
        1
    falsemask  
       2023-02-07 17:11:14 +08:00
    我觉得是 get ,hget 要算两次 hash
    Mirana
        2
    Mirana  
       2023-02-07 17:12:33 +08:00
    get 啊
    cco
        3
    cco  
       2023-02-07 17:14:13 +08:00
    肯定 get 啊。
    cmhonker
        4
    cmhonker  
    OP
       2023-02-07 17:31:43 +08:00
    @falsemask 为什么呢,hget 也是一次哈希计算吧?
    wangxin3
        5
    wangxin3  
       2023-02-07 17:49:08 +08:00
    我理解的。hget key fieldName 首先要从 redis 中找到这个 hash 表(这里 hash 表是 1000w 条数据),然后从 hash 表中取出指定 fieldName 的一条数据,虽然时 O(1),但是比 get 多了从 hash 表再取数据的操作。
    fanchenio
        6
    fanchenio  
       2023-02-07 17:56:16 +08:00
    hget ,首先得找到那个 map 吧,然后再去找 map 里的元素,get 直接提取就好了,hget 两个步骤,get 一个步骤,个人感觉,应该是 get 快吧。
    imdgr886
        7
    imdgr886  
       2023-02-07 18:09:38 +08:00
    有没有可能,get 比 hget 只快了 1% (瞎猜的),楼主如果有时间可以测试一下,搞点 mock 数据,用两个方法操作 10w 次
    falsemask
        8
    falsemask  
       2023-02-07 18:11:56 +08:00
    @cmhonker 取 field 还需要一次
    8355
        9
    8355  
       2023-02-07 18:27:12 +08:00
    get 是访问变量
    hget 是访问数组
    hhjswf
        10
    hhjswf  
       2023-02-07 18:39:30 +08:00 via Android
    @cmhonker 盲猜两次吧,第一次计算 key 的位置,第二次计算 field 在集合中的位置
    iweus
        11
    iweus  
       2023-02-08 11:03:08 +08:00
    Redis 中的 GET 和 HGET 在性能上的差异取决于它们的使用场景。

    GET 操作是从 Redis 键空间中获取字符串类型的键的值,它是 Redis 最基本的存储操作,并且比较快速。

    HGET 操作是从 Redis 中的哈希表中获取字段的值,它的性能一般比 GET 慢一些,因为它需要进行额外的计算,以确定哈希表中存储的位置。

    因此,如果您需要从 Redis 中快速获取字符串类型的键,那么 GET 操作是一个更好的选择,如果您需要从 Redis 哈希表中获取字段的值,则 HGET 操作是一个更好的选择。



    来自 chatGPT 的回答
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3594 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:50 · PVG 18:50 · LAX 02:50 · JFK 05:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.