怎么使用命令批量删除匹配的 key 值? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JimmyChan1506
V2EX    Redis

怎么使用命令批量删除匹配的 key 值?

  •  
  •   JimmyChan1506 2023-07-14 16:17:18 +08:00 2171 次点击
    这是一个创建于 826 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用下面的命令可以查到一堆 key

    redis-cli -a myPassword -h redis-host -p 6379 --scan --pattern '*myKey*' 

    但使用下面的命令,却无法删除成功

    redis-cli -a myPassword -h redis-host -p 6379 --scan --pattern '*myKey*' | xargs redis-cli -a myPassword -h redis-host -p 6379 unlink (integer) 0 

    当然了, 把 unlink 改成 del 也是一样的效果, 不知道大家有没有解决过一样的问题?

    20 条回复    2023-07-17 08:39:39 +08:00
    Azone
        1
    Azone  
       2023-07-14 16:37:08 +08:00
    xargs 是不是少个 -n 1 的参数
    JimmyChan1506
        2
    JimmyChan1506  
    OP
       2023-07-14 16:45:06 +08:00
    @Azone 加了试了一下还是没有能成功删除
    Red998
        3
    Red998  
       2023-07-14 16:55:23 +08:00
    用 lua 脚本删除呗 、数据不多 就直接 del
    Red998
        4
    Red998  
       2023-07-14 16:59:10 +08:00
    unlink 可不一样 虽然是卸载了查询不到 但是 redis 还没有真正释放内存、有定时任务会清理。del 就是直接释放内存空间。但是如果大 key 删除就会阻塞其他命令
    aaronkk
        5
    aaronkk  
       2023-07-14 17:10:46 +08:00
    据量大的话要避免阻塞,用 unlink 异步删除比 del 更安全
    8355
        6
    8355  
       2023-07-14 17:13:05 +08:00
    用 lua 脚本
    local keys = redis.call('KEYS', 'aaa*')
    for i, key in ipairs(keys) do
    redis.call('UNLINK', key)
    end
    8355
        7
    8355  
       2023-07-14 17:13:57 +08:00
    @Red998 #4 说的对,类似大 hash 和 list 的话这种还是建议 unlink 删
    JimmyChan1506
        8
    JimmyChan1506  
    OP
       2023-07-14 17:15:49 +08:00
    @Red998 主要是想知道这种命令应该怎么写, 删 key 倒不是目的了
    aaronkk
        9
    aaronkk  
       2023-07-14 17:26:35 +08:00
    集群,带上-c 参数试试
    JimmyChan1506
        10
    JimmyChan1506  
    OP
       2023-07-14 17:43:17 +08:00
    @aaronkk 加了, 没用
    JimmyChan1506
        11
    JimmyChan1506  
    OP
       2023-07-14 17:44:38 +08:00
    @Azone 加了-t 和-n 1 参数后, 发现是把 key 按空格键对一个 key 进行多行分割了, 不明白为何加了 -n 1 之后还是会出现这种情况 .....
    JimmyChan1506
        12
    JimmyChan1506  
    OP
       2023-07-14 17:54:15 +08:00
    key 是类似于 "aaa::bb{cc='a', id=null } theReqeust[id=null;no=aa;]" 这样的形式
    rrfeng
        13
    rrfeng  
       2023-07-14 18:07:39 +08:00 via Android
    先看看 scan 。的输出啊,不一定是只有 key
    xargs 直接干也是够大胆…
    yangxx
        14
    yangxx  
       2023-07-14 18:26:18 +08:00
    用这样的命令试下,redis-cli -h localhost --scan --pattern '*test*' |xargs -n 1 echo unlink |redis-cli -h localhost
    pubby
        15
    pubby  
       2023-07-14 20:50:59 +08:00 via iPhone
    按行读取试试

    SCAN | while read k; do DEL $k; done
    dorothyREN
        16
    dorothyREN  
       2023-07-14 21:46:51 +08:00
    redis-cli -a myPassword -h redis-host -p 6379 keys '*myKey*' | | xargs redis-cli -a myPassword -h redis-host -p 6379 DEL
    worldOnlyYou
        17
    worldOnlyYou  
       2023-07-15 10:54:34 +08:00
    redis-cli scan 返回的 key 前面还有序号的,你这样直接删肯定不行
    JimmyChan1506
        18
    JimmyChan1506  
    OP
       2023-07-15 20:06:49 +08:00
    @worldOnlyYou 那应该怎么搞呢?
    JimmyChan1506
        19
    JimmyChan1506  
    OP
       2023-07-17 08:39:15 +08:00
    @worldOnlyYou 我把 xargs 前面的部分执行, 取其中一个 key 来 del, 是没有问题的
    JimmyChan1506
        20
    JimmyChan1506  
    OP
       2023-07-17 08:39:39 +08:00
    @rrfeng 测试环境, 为开发方便
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2820 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 06:30 PVG 14:30 LAX 23:30 JFK 02:30
    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