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

redis set sadd/srem 大量 key 批量操作

  •  
  •   yanguangs · 2019-03-27 23:10:18 +08:00 · 14159 次点击
    这是一个创建于 2065 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请问有什么办法能够在 redis 里面操作多个 set sadd/srem 同一个值吗?

    目前的代码用 pipeline 去打包操作

    但是还是会导致 redis sadd/srem 的时候占用时间太长

    srem 40w key value 耗时 2s-3s

    sadd 40w key value 耗时 3s-5s

    有类似 sadd key value1 value2 的 sadd key1 key2 key3 value 的操作吗?

    如果没有,那怎么去减少这个暂停的时间呢?

    4 条回复    2019-03-28 10:43:53 +08:00
    Athrob
        1
    Athrob  
       2019-03-28 03:43:08 +08:00 via iPhone
    lua 脚本试试
    charles2java
        2
    charles2java  
       2019-03-28 08:30:06 +08:00 via Android
    不是应该减少每次 sadd 的个数,少量多次操作
    yanguangs
        3
    yanguangs  
    OP
       2019-03-28 09:24:49 +08:00
    @charles2java 你是说把这 40W 的操作量划分成更小的吗? 比方说 5*8w 这样子的操作吗?

    redis 没有 sadd key1 key2 key3 value 的这种语法糖吗?
    YaphetYin
        4
    YaphetYin  
       2019-03-28 10:43:53 +08:00
    https://redis.io/topics/pipelining

    官方建议的方案 1 楼 2 楼都给出来了
    - 切片 pipeline, 40w 太大了
    - script
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3005 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:13 · PVG 22:13 · LAX 06:13 · JFK 09:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.