zoukankan      html  css  js  c++  java
  • redis批量删除key 远程批量删除key

    一、遇到的问题

      在开发的过程中,经常会遇到要批量删除某种规则的key,如缓存的课程数据“course-课程uid”,其中课程uid是变量,我们需要删除"course-*"这一类的数据,但是这里就坑了,redis有提供批量查询一类key的命令keys,但是没有提供批量删除某种类型key的命令。

    二、解决方案

      先看看我们怎么解决。

    1、先进入redis的客户端

    cd redis所在目录/src
    ./redis-cli

    2、初始化数据,模拟数据

    127.0.0.1:6379> set course-1 1
    OK
    127.0.0.1:6379> set course-2 2
    OK
    127.0.0.1:6379> set course-3 3
    OK

    3、通过keys命令可以看到,现在有上面的三个key

    127.0.0.1:6379> keys  course-*
    1) "course-3"
    2) "course-2"
    3) "course-1"

    4、退出redis的客户端

    127.0.0.1:6379> exit

    5.1、本地批量删除key

    ./redis-cli keys "course-*" | xargs ./redis-cli del

    此处刚刚 course-*  相关的3个key已经被删除了

    原理解析:

      先通过redis客户端执行了keys命令,模糊搜索出所有的key,通过xargs命令,将前面查询出来的key作为后面redis的del命令的输入

    最终执行的结果可以理解成

     1、模糊查询

    keys "course-*" 

      查询出上面的course-1 course-2 course-3 这三个key

    2、执行删除key

      del的三个key来自前面的keys查询

    del course-1 course-2  course-3    

    5.2、远程批量删除key

      经常我们开发的时候,redis都是公用的,可能redis不在本地我们可以通过redis客户端远程进行删除

    ./redis-cli -h redis所在服务器ip -p 端口 keys "course-*" |xargs ./redis-cli -h redis所在服务器ip -p 端口 del

    三、补充知识

    1、远程某台机子的redis

      以下实例演示了如何连接到主机为 127.0.0.1,端口为 6379 ,密码为 mypass 的 redis 服务上。

    redis-cli -h 127.0.0.1 -p 6379 -a "mypass"

    2、xargs命令

    xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。 详情课件 http://man.linuxde.net/xargs

    致谢:感谢您的耐心阅读! 

  • 相关阅读:
    python redis操作
    subprocess模块的使用
    tcpcopy 流量复制工具
    Python名称空间与闭包
    python 偏函数
    Python面向对象的特点
    vsftpd 安装及使用虚拟用户配置
    shell 并发脚本
    Centos7 搭建LVS DR模式 + Keepalive + NFS
    python pip 升级
  • 原文地址:https://www.cnblogs.com/0201zcr/p/9647787.html
Copyright © 2011-2022 走看看