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

Garnet 真比 Redis 快吗?

  •  
  •   keakon ·
    keakon · 217 天前 · 4559 次点击
    这是一个创建于 217 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用 Docker 跑了下 redis-benchmark:

    • Redis 大部分测试约 17w qps
    • 单 CPU 时,Garnet 大部分测试约 3w qps
    • 不限制 CPU (共 10 核)时,CPU 占用率约 300%,大部分测试约 4w qps

    难道要用 C# 跑测试才能发挥 Garnet 的性能? https://microsoft.github.io/garnet/docs/benchmarking/results-resp-bench

    15 条回复    2024-04-28 11:24:03 +08:00
    bthulu
        1
    bthulu  
       217 天前   ❤️ 1
    我不信, 视频发来看看
    hez2010
        2
    hez2010  
       217 天前   ❤️ 2
    我也跑过,用的 mentier_benchmark ,同样是 redis 自己出品的 benchmark 工具。

    单线程:

    ![single]( )

    多线程:

    ![multi]( )

    无论单线程还是多线程 garnet 都比 redis 更快。
    qweruiop
        3
    qweruiop  
       217 天前   ❤️ 1
    我们有个新项目已经迁移到 garnet 了,是比 redis 快。。。
    povsister
        4
    povsister  
       217 天前
    @hez2010
    这数据看起来有点顶啊
    lsk569937453
        5
    lsk569937453  
       217 天前
    https://github.com/lsk569937453/rcache

    用 rust 实现的 redis ,用 redis-benchmark 测试,4 核 8G 下,rcache 的 tps 是 redis 的两倍。我这还是简单的直接用全局锁一个 Map ,不知道 garnet 用的什么黑科技。

    缺点就是 rcache 多线程下 cpu 几乎能跑满,而 redis 的 cpu 一直稳定在 100%左右(这就是单线程的魅力吗。。。)
    sujin190
        6
    sujin190  
       217 天前 via Android
    @hez2010 没懂你这是服务端多线程还是测试工具多线程,否则就算单核也不可能这么低吧,话说咱要测的是服务端性能吧,而且差距这么大 128 核心?
    hez2010
        8
    hez2010  
       217 天前
    @sujin190 单线程的测试设置了 pipeline=1 ,意味着一次请求返回之后才会进行下一次请求。而多线程的 pipeline 设置的 1024 ,能够充分利用计算机资源。
    qcbf111
        9
    qcbf111  
       217 天前
    c#还是牛逼呀,unity 好像能升级到最新版.net 就好了
    keakon
        10
    keakon  
    OP
       217 天前
    @hez2010 加了 -P 1024 后,分别是 218w 、68w 和 80w ,差距小了一点。。
    sujin190
        11
    sujin190  
       217 天前 via Android
    @hez2010 话说似乎 garnet 是多核多线程的吧,redis 似乎是单线程的,应该是负载一样的来比吧
    chenqh
        12
    chenqh  
       217 天前
    但是一般 redis 的性能就够了吧,而且因为 redis 处理逻辑上是单线程,所以可以确实不会因为什么 lock 问题导致数据出现问题.
    wxf666
        13
    wxf666  
       217 天前
    @hez2010 #8 如果 8 线程访问 Redis ,每个线程 pipeline 都是 1 。这算啥?
    hez2010
        14
    hez2010  
       217 天前
    @wxf666 我测的单线程是 1 client 1 thread 1 concurrency 1 pipeline 的。
    haython
        15
    haython  
       217 天前
    @sujin190 为什么要负载一样来比?就是要比极限啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2450 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 04:50 · PVG 12:50 · LAX 20:50 · JFK 23:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.