Redis 中使用 pipeline 执行命令时,有单次执行数量的限制吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Ackvincent
V2EX    Redis

Redis 中使用 pipeline 执行命令时,有单次执数量的限制吗?

  •  
  •   Ackvincent 2023-11-29 19:35:29 +08:00 2840 次点击
    这是一个创建于 713 天前的主题,其中的信息可能已经有所发展或是发生改变。

    通过 scan 方法获取 1W 个 key 的名字,然后使用 pipeline 执行 memory_usage 命令获取这 1W 个 key 占用空间的大小,这样会对服务器造成很大压力吗?现在在测试服务器上执行感觉没什么压力,不知道生产环境下,会不会有影响。 谢谢

    9 条回复    2023-11-30 13:43:14 +08:00
    kuituosi
        1
    kuituosi  
       2023-11-29 20:31:54 +08:00
    redis 单线程的,一次执行 1w 个会导致处理其他请求延迟
    ShuWei
        2
    ShuWei  
       2023-11-29 22:38:28 +08:00
    我就是好奇的问一句,需要这样操作,这是什么样的场景啊
    MIUIOS
        3
    MIUIOS  
       2023-11-29 22:43:15 +08:00
    其他线程会被阻塞
    qianzanqi
        4
    qianzanqi  
       2023-11-29 23:04:51 +08:00
    服务端输出缓冲区被打爆了会强制断开连接,注意这个就好。而且 pipeline 一次一万和十次一千也差不了多少,多拆几次呗
    lsk569937453
        5
    lsk569937453  
       2023-11-30 08:54:08 +08:00
    所以为什么不一条指令一条指令的执行 memory_usage 呢
    Ackvincent
        6
    Ackvincent  
    OP
       2023-11-30 10:40:29 +08:00
    @kuituosi 谢谢您
    @ShuWei 希望监控服务器的运行状态,提早发现 bigkey 以免内存不够用,看各位大佬的说法,这样做并不科学。
    @totoro52 谢谢您
    @qianzanqi 也有试过拆成十次一千,测试时执行时间是 4700ms ,一次一万是 1400ms ,之前考虑执行耗时短会减轻对服务器端的压。谢谢您。
    @lsk569937453 这样每条指令都要通信一次,执行时间会比较长。
    感谢各位大佬的帮助,后边调整为凌晨负载低的时间执行,尽量不对正常业务造成影响。
    ShuWei
        7
    ShuWei  
       2023-11-30 11:38:12 +08:00
    建议最好用行政手段从应用层规范,尽量避免大 key ,再使用 slowlog 定期检查是否有漏网之鱼,通过 scan 跟 memory usage 来检查,实在是个不太明智的做法

    如果规模很大,可以考虑上个代理层,这样可以在代理层进行记录,可能更直观
    shinyruo2020
        8
    shinyruo2020  
       2023-11-30 13:21:33 +08:00
    用管道问题不大,注意不要用事务就行
    guxingke
        9
    guxingke  
       2023-11-30 13:43:14 +08:00
    https://github.com/guxingke/redis-tools

    ------
    贴一个小工具,bigkeys ,扫描 rdb 的大 key

    λ rdt bigkeys xxxx.rdb
    total: 4419415

    Biggest String Keys
    ┌───────────────────┬───────────────────┬───────────────────┬───────────────────┬──────────────────┐
    │ key │ type │ mem(byte) │ size │ ttl(ms) │
    ├───────────────────┼───────────────────┼───────────────────┼───────────────────┼──────────────────┤
    │ xxxxxxx │ String │ 222955086 │ 1 │ -1 │
    │ yyyyyyyyyyyyt │ String │ 13 │ 1 │ 110394014 │
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     953 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 20:42 PVG 04:42 LAX 12:42 JFK 15:42
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86