• 批量取redis keyvalue和批量删除key


    需求:取出所有前缀为g.at.ga.的string类型的key及其value
    实现:
    1. 取出key
    redis-cli -p 26379 -a 123456 -n 0 keys g.at.ga.* > a.txt
    2. 拼出取value的命令
    sed ‘s/^/get &/g’ a.txt > b.txt
    3. 取value
    cat b.txt | redis-cli -p 26379 -a 123456 -n 0 --pipe > c.txt
    4. 将key、value 拼成一个文件
    paste a.txt c.txt > d.txt

    需求2:批量删除key(要删除的key已经导出到一个文件中)
    实现:
    1. key文件改名
    mv vsp_article_watch_add_score.log vsp_article_watch_add_score.log.1
    2. 拼接删除key的命令
    sed ‘s/^/unlink &/g’ vsp_article_watch_add_score.log.1 > vsp_article_watch_add_score.log
    3. 执行批量删除
    cat vsp_article_watch_add_score.log | redis-cli -p 26379 -a 123456 -n 0 --pipe

    需求3:一键批量删除指定key

    /home/redis/redis-5.0.3/src/redis-cli -h 192.168.1.36 -p 26379 -a 123456 -n 1 keys "g.at.ga.*" | xargs /home/redis/redis-5.0.3/src/redis-cli -h 192.168.1.36 -p 26379 -a 123456 -n 1 unlink
    
    • 1

    需求4:批量修改特征key的过期时间为一个1-3600秒之间的随机数

    实现:

    # 方法1,用循环逐行拼命令,很慢
    rm -f c.txt
    
    /home/redis/redis-5.0.3/src/redis-cli -h 192.168.1.36 -p 26379 -a 123456 -n 1 keys room_onmic_photo:* > a.txt
    
    cat a.txt|while read line
    do
        r=`expr $RANDOM % 3600`
        echo "expire ${line} $r" >> c.txt 
    done
    
    cat c.txt | /home/redis/redis-5.0.3/src/redis-cli -h 192.168.1.36 -p 26379 -a 123456 -n 1 --pipe
    
    
    # 方法2,用awk拼命令,很快。通过管道一句执行,不需要临时文件。
    /home/redis/redis-5.0.3/src/redis-cli -h 192.168.1.36 -p 26379 -a 123456 -n 1 keys room_onmic_photo:* | awk -v seed=$RANDOM 'BEGIN{srand(seed);} {print "expire "$0" " int(rand()*10000%3600+1) }' | /home/redis/redis-5.0.3/src/redis-cli -h 192.168.1.36 -p 26379 -a 123456 -n 1 --pipe
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    TiDB Vector 抢先体验之用 TiDB 实现以图搜图
    算法通过村第十一关-位运算|白银笔记|高频题目
    鸿蒙Harmony应用开发—ArkTS声明式开发(自定义事件分发)
    mysql explain详解
    excel常用的几个函数
    【【萌新的FPGA学习之分频器的介绍】】
    CoCube群机器人预览→资讯剧透←
    oracle统计信息
    题解_notion(持续更新ing)
    (面试题)面试官为啥总是让我们手撕call、apply、bind?
  • 原文地址:https://blog.csdn.net/m0_67402013/article/details/126578794