Redis 命令行 redis-cli 介绍

文若5个月前技术文章126

前言

redis-cli 是 Redis 自带的命令行工具,是运维和开发人员常用的工具,本篇文章将介绍它的使用技巧和一些有趣的功能。

1. 连接 Redis 服务

redis-cli 默认连接的是 127.0.0.1 端口为 6379 的 Redis 服务,我们可以使用不同的选项,指定它连接到不同的主机或 IP 地址。

redis-cli -h 192.168.8.49 -p 6378 -a 'Redis123' -n 1

例如,上方命令,表示连接到 192.168.8.49 端口为 6378 密码为 Redis123 编号为 1 的 Redis 数据库。

2. 从其他程序获取输入

通过 redis-cli 执行一个文件中的命令,或者从 STDIN 中读取最后一个参数,例如,要将 Redis 密钥设置为本地文件系统中的net_services 文件内容:

redis-cli -a 'Redis123' -x SET net_services < /etc/services

下面演示从文件中读取 Redis 命令:

$ cat commands.txt | redis-cli -a 'Redis123'
OK
(integer) 101
(integer) 6
"101xxx"

其中 commands.txt 的内容是:

SET item:3374 100
INCR item:3374
APPEND item:3374 xxx
GET item:3374

3. 连续执行相同的命令

可以执行单个命令,指定执行次数和时间间隔,例如,想要监控 INFO 中的某项指标,或者想要模型一些重复写入。

该功能由两个参数控制 -r <count> 控制执行的参数,如果为 -1 表示不限制次数, -i <delay> 为时间间隔,以秒为单位,0.1 表示为 100 毫秒,如果不指定该参数或者设置为 0 程序将尽快执行命令。

$ redis-cli -a 'Redis123' -r 5 -i 0.1 INCR counter_value
(integer) 10
(integer) 11
(integer) 12
(integer) 13
(integer) 14

例如,每隔 1 秒,打印出 RSS 内存大小:

$ redis-cli -a 'Redis123' -r 5 -i 1 INFO | grep rss_human
used_memory_rss_human:4.28M
used_memory_rss_human:4.28M
used_memory_rss_human:4.28M
used_memory_rss_human:4.28M
used_memory_rss_human:4.28M

4. CSV 输出

将命令的结果,以 CSV 的格式进行输出:

# 写入列表
$ redis-cli -a 'Redis123' LPUSH mylist a b c d
(integer) 4
# 查询
$ redis-cli -a 'Redis123' LRANGE mylist 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
# 以 csv 格式输出
$ redis-cli -a 'Redis123' --csv LRANGE mylist 0 -1
"d","c","b","a"

请注意,该 --csv 标志仅适用于单个命令,而不适用于导出的整个数据库。

5. 输出帮助信息

查看命令的用法,内容覆盖 Redis 大部分的命令,有两种用法,第一种是 HELP @<category> 显示有关给定类别的所有命令。类别有:

  • @generic

  • @string

  • @list

  • @set

  • @sorted_set

  • @hash

  • @pubsub

  • @transactions

  • @connection

  • @server

  • @scripting

  • @hyperloglog

  • @cluster

  • @geo

  • @stream

第二种方式,是 HELP <commandname> 显示作为参数给出的命令的具体帮助。

127.0.0.1:6379> HELP keys

 KEYS pattern
 summary: Find all keys matching the given pattern
 since: 1.0.0
 group: generic

6. 清空屏幕

在交互模式下使用该 CLEAR 命令会清除终端的屏幕。

clear

7. 连续监控统计信息

redis-cli 连续统计模式可能是实时监控 Redis 实例的鲜为人知但非常有用的功能之一。要启用此模式,--stat 请使用该选项。

redis-cli -a 'Redis123' --stat
------- data ------ --------------------- load -------------------- - child -
keys       mem      clients blocked requests            connections          
128325     1.04G    71      0       92694486 (+0)       1795659    
128323     1.04G    71      0       92694500 (+14)      1795664    
128322     1.04G    71      0       92694506 (+6)       1795664    
128324     1.04G    71      0       92694556 (+50)      1795664    
128322     1.04G    71      0       92694571 (+15)      1795664    
128321     1.04G    71      0       92694576 (+5)       1795664    
128321     1.04G    71      0       92694581 (+5)       1795664    
128321     1.04G    71      0       92694595 (+14)      1795669
  • keys:表示当前 key 的总数量。

  • mem:表示当前 Redis 内存使用量。

  • clients:表示当前连接客户端的数量。

  • blocked:表示当前堵塞客户端数量。

  • requests:QPS 总数(新增的数量)

  • connections:服务器连接的总次数。

在这种情况下,该 -i <interval> 选项用作为监控时间间隔。默认值为 1 秒。

8. 输出大 key 报告

$ redis-cli --bigkeys

# Scanning the entire keyspace to find biggest keys as well as
# average sizes per key type.  You can use -i 0.01 to sleep 0.01 sec
# per SCAN command (not usually needed).

[00.00%] Biggest string found so far 'key-419' with 3 bytes
[05.14%] Biggest list   found so far 'mylist' with 100004 items
[35.77%] Biggest string found so far 'counter:__rand_int__' with 6 bytes
[73.91%] Biggest hash   found so far 'myobject' with 3 fields

-------- summary -------

Sampled 506 keys in the keyspace!
Total key length in bytes is 3452 (avg len 6.82)

Biggest string found 'counter:__rand_int__' has 6 bytes
Biggest   list found 'mylist' has 100004 items
Biggest   hash found 'myobject' has 3 fields

504 strings with 1403 bytes (99.60% of keys, avg size 2.78)
1 lists with 100004 items (00.20% of keys, avg size 100004.00)
0 sets with 0 members (00.00% of keys, avg size 0.00)
1 hashs with 3 fields (00.20% of keys, avg size 3.00)
0 zsets with 0 members (00.00% of keys, avg size 0.00)

9. 监控 Redis 执行的命令

监控 Redis 接收到的所有命令,输出到终端。

redis-cli -a 'Redis123'  MONITOR
1460100081.165665 [0 127.0.0.1:51706] "set" "shipment:8000736522714:status" "sorting"
1460100083.053365 [0 127.0.0.1:51707] "get" "shipment:8000736522714:status"

可以通过管道传输输出,因此可以使用诸如 grep 的命令。


相关文章

MongoDB的写入安全级别

一、MongoDB写入安全级别为提高数据写入的安全性,在客户端可以设置相应的安全级别来进行控制,MongoDB提供四种写入级别,分别是:1、非确认式写入(Unacknowledged)非确认式写入不会...

k8s删除Terminating状态的命名空间

问题描述Kubernetes中namespace有两种常见的状态,即Active和Terminating状态,其中Terminating状态一般会比较少见,当对应的命名空间下还存在运行的资源,但该命名...

ElasticSearch shard&replica机制梳理和创建index图解

ElasticSearch shard&replica机制梳理和创建index图解

1、shard&replica的机制梳理1个index包含多个shard。一个shard包含index的部分数据每个shard都是最小的工作单元,承载部分数据,lucene实例,完整的建立索引...

8.0 新特性-Generated Invisible Primary Key

8.0 新特性-Generated Invisible Primary Key

说明MySQL Innodb 引擎采用的是 IOT(索引组织表)存储方式,主键的重要性就不言而喻。在早期版本用户如果没有显式指定主键,会自动生成隐藏主键 row_id 来组织 B+ 树,隐藏主键 ro...

PG的多版本并发控制(一)

PG的多版本并发控制(一)

一、 表系统字段几个比较重要概念1.1  tupletuple表示表中的数据行,在MySQL中用row表示。在表数据页中,主要分为普通的数据元祖和TOAST元祖。以下是一个普通数据元祖的结构,主要由三...

慢查询导致ES CPU资源打满

慢查询导致ES CPU资源打满

o   一、问题背景§  1.1 集群背景信息§  1.2 收到告警o   二、处理过程§  2.1 查看监控§  2.2 登录kibana查看§  2.3 登录服务器使用命令查看·       2....

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。