redis运维(六)redis-cli命令

这篇具有很好参考价值的文章主要介绍了redis运维(六)redis-cli命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一  redis-cli

注意: 'redis-cli'核'redis-server'版本必须适配 --> '见' redis-cli --version

提示: 不过一般安装服务端 redis-server 时'内置'了客户端 redis-cli

说明:  redis-cli 是 redis 的一种命令行的'客户端'工具

备注: 'redis-server'的安装过程这里'不再'赘述

①  redis-cli的命令行参数

优点:redis-cli 实现'非交互',意味者'批量',可以'自动化'

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

案例讲解

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

细节:redis-cli客户端和redis-server版本'不适配',导致'-c'集群模式参数'不生效'

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

②  测试连通性

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

1、ping 是'redis的命令' --> 检验'是否连接上'redis

2、说明:输入命令ping,返回'PONG',表示'已连接redis-server'

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

③  环境变量登入

方式1: redis-cli -a '指定密码'

方式2: auth  '指定密码'

方式3: REDISCLI_AUTH '环境变量'

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

④ -i 定时任务

1、-r 参数: 重复执行'一个命令'指定的'次数'

2、-i 参数: 设置命令'执行的间隔'

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

案例: 每隔'1秒'执行一次,一共执行3次'info cpu'命令

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

-c 集群模式  重要

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

1、与前面'单机/主从/哨兵'模式'不同'的是,客户端命令 redis-cli 需要增加一个'-c'参数

2、表示是'连接到集群',这样客户端的'读写行为'才是在'整个集群中可见'的

特点: 查询和删除的'solt'槽位'不在'当前节点,会'自动跳转'到目标节点

3、若'不加-c参数'虽然也可连接,但是仅仅是连接到'当前的节点',是无法进行数据读写的

备注: 除非所读写的数据的键值,经过'Hash 计算'得到的 slot 槽号,'刚好在这个节点'里面

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

redis-cli -c -h  -p 

其中:

  1、'-c选项'表示开启'集群'模式

  2、'-h 和-p 选项'指定redis集群'某一节点'的ip和端口

思考: 登录客户端'使用-c'与'不使用'的区别

解读: redis-cli -c -p 端口号  或者 redis-cli  -p 端口号

1、使用-c会'自动重定向'key对应插槽的'服务端'

2、不使用-c'不会'自动重定向,会'报错',并告诉你应前往的'redis实例地址和端口'

场景: 批量删除前,查询'集群中对应pattern'的key

redis '5.0 +' 才提供了 '-c'的参数

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

redis集群的梦游模式/事务/槽位转移

背景: Redis本身并'不支持批量删除key'的操作

 redis-cli -c keys key*  | awk -FS '{system("redis-cli -c del \"" $1 "\"")}'

 redis-cli -c  scan 0 MATCH key* COUNT 10000 \

| awk -FS '{system("redis-cli -c del \"" $1 "\"")}' 

++++++++++++++  '分割线'  ++++++++++++++

del命令'不支持通配符',所以当要'同时删除多个键'时比较麻烦,暂时只了解以下'两种'方法;

1: 结合linux的'管道'和xargs命令自行实现删除'所有符合pattern规则'的键

 需求: 要删除'DIC:开头的键',可到redis目录下后执行

  ./redis-cli -h redis的ip -p redis端口 -a redis密码 KEYS "DIC:*" \

| xargs ./redis-cli  -h redisip -p redis端口 -a redis密码  DEL;

2: 因为redis的del命令也支持多个建作为参数,所以也可以用如下命令:

  ./redis-cli -c -h redisip -p redis端口 -a redis密码 DEL \

`./redis-cli -c -h redisip -p redis端口 -a redis密码  KEYS "DIC*"`  

备注: 第二个指令的'性能'更好一点

Redis实用小技巧:批量删除指定的key

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

1、xargs后面的 '-n1' 是集群情况下要加的,不然当'集群key的数量大于1'时

会'报错' (error) CROSSSLOT Keys in request don’t hash to the same slot

redis集群批量模糊删除key

⑥  -x

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

-x '参数': 从'标准输入'读取一个参数

echo -n 'wzj' | redis-cli -x set hello

细节: echo命令是'默认'带有'回车\n'的

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

⑦  --eval  运行外部文件lua脚本

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

说明: 编写'简单'脚本时,'--eval'选项很'有用'

cat /tmp/script.lua  --> '内容'

  return redis.call('set',KEYS[1],ARGV[1])         

redis-cli -h 127.0.0.1 -p 6379 --eval /tmp/script.lua wzj,tony

补充: 它使用'逗号'分隔'键'和'参数',所以'wzj'会填充'KEYS数组','tony'会填充'ARGV数组'

redis的eval命令使用

⑧  批量删除 key 报错

1、问题'现象': java做'序列化'的时候生成了一些'特殊的key'

Warning: a NUL character occurred in the input

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

根因:key是JDK序列化后的字符串,xargs读取出来是乱码,无法删除

2、问题'根因'

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

linux shell 删除key \xAC\xED\x00\x05t\x00\x04${key} 序列化16进制

3、解决'策略1'

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

注意: redis-cli一定要与redis-server '版本适配'

后续: 模拟'序列化'和'删除'的操作

redis解决key乱码

4、解决'策略2'

说明: '不推荐',因为'以此开头'的key可能'不符合'我们的预期

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

redis批量删除key  批量删除指定的key

redis-cli -c -a 123456 keys '条件' | xargs -I {} redis-cli -c -a 123456 delete

备注: xargs -I {} 参数可以避免'key 中存在空格'导致的'参数拆分'异常问题

⑨  redis-cli --cluster 集群管理命令

强调:redis-cli -c 与 redis-cli --cluster '不同'

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

⑩  redis-cli 安全问题

redis操作历史: '~/.rediscli_history'

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

可以设置环境变量'REDISCLI_HISTFILE=/dev/null',它将'阻止'保存redis操作历史记录.

两种方式禁止redis记录

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

⑪   --bigkeys参数 --latency参数 -pipe参数 --scan --pattern参数

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH

redis-cli,redis,redis,redis-cli,REDISCLI_AUTH文章来源地址https://www.toymoban.com/news/detail-845994.html

到了这里,关于redis运维(六)redis-cli命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【漏洞复现】锐捷 EWEB auth 远程命令执行漏洞

    免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。             

    2024年03月12日
    浏览(94)
  • PHP命令行CLI的使用

    PHP命令行界面(CLI)是一种使用命令行(终端)来运行PHP脚本的方式,与在Web服务器环境下运行PHP不同。CLI提供了一种与操作系统交互的方式,能够在命令行中直接执行PHP代码。 以下是一些与PHP命令行相关的重要信息: 运行PHP CLI:要在CLI中执行PHP脚本,将PHP解释器的可执行

    2024年02月11日
    浏览(32)
  • 查看vue-cli版本的两个命令

    有的时候想要查看自己的vue-cli的版本,但是不知道怎么查看,这个时候就可以使用这两个命令了 注意:这两个命令都是在装了全局的vue-cli的基础上,并且通过cmd窗口操作的 打开命令窗口输入: 注意:是大写的V 打开命令窗口输入: 这两个命令都是可以的

    2024年02月11日
    浏览(45)
  • 性能测试 Jmeter 非 GUI 模式 -CLI 命令详解

      我们在使用Jmeter做性能测试的时候,大部分同学用的是图形化界面进行脚本编写和执行性能测试的。但是其实真正在公司执行性能测试的时候,我们基本上不会用图形化界面去执行测试,这是因为工具渲染这些图形本身会让Jmeter结果存在很多不稳定的因素。 所以,我们在真

    2024年04月22日
    浏览(33)
  • vue-cli4 配置不同开发环境打包命令

    为什么会需要配置多种环境变量? 在一个产品的开发过程中,一般来说都是会经历这么一个过程: 本地开发 → 测试版部署 → 测试 → 预上线 → 正式上线 。对应的每一个环节中的服务器地址,接口地址...都会不一样。那么我们需要怎么去处理这种情况。 #1. 创建文件 在

    2024年02月16日
    浏览(72)
  • ros2学习笔记-CLI工具,记录命令对应操作。

    启动前要检查环境变量: ROS_DOMAIN_ID 和 ROS_LOCALHOST_ONLY 。如果通信时PIN不同,应该首先考虑是不是环境变量设置错误。 Configuring environment 记得source一下ros2。 Turtlesim 是一款用于学习 ROS2 的轻量级模拟器。 它说明了 ROS 2 在最基本的层面上做了什么,让您了解以后将如何处理真

    2024年01月21日
    浏览(44)
  • 使用 npm install -g @vue/cli命令报错

    使用命令出现报错 npm config list 查看npm的路径 PowerShell命令里面输入: 找到prefix这一行复制路径——鼠标左键点击此电脑(桌面有我的电脑也可以,没有随便去一个文件夹看左侧一个个找),点击属性, 高级设置,点击环境变量——》系统变量——》双击Path——》点击新建添

    2024年02月20日
    浏览(52)
  • 【运维】运维常用命令

    说明 这里的关键有几点: 使用单个等号 注意到等号两边各有一个空格:这是unix shell的要求 注意到\\\"$test\\\"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的。而如果没有这个x,表达式就会报错:[: =: unary operator expected 如果我

    2023年04月15日
    浏览(37)
  • 【漏洞复现】锐捷EG易网关cli.php后台命令执行漏洞

            锐捷EG易网关是一款综合网关,由锐捷网络完全自主研发。它集成了先进的软硬件体系架构,配备了DPI深入分析引擎、行为分析/管理引擎,可以在保证网络出口高效转发的条件下,提供专业的流控功能、出色的URL过滤以及本地化的日志存储/审计服务。         锐

    2024年01月22日
    浏览(40)
  • uniapp的h5项目 用命令起这个项目(vue-cli)

    这里其实就相当于给uniapp h5套了一个vue-cli的壳(纯属个人感觉) 首先需要安装vue-cli 脚手架 然后创建项目(这里需要在hbuilder创建) 安装成功后它的结构是目录, 打开项目查看package.json文件,所有对应的命令都已经有了 用命令运行一下 然后在把你的uniapp h5项目全部拷贝到

    2024年04月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包