Redis 管理命令
阅读原文时间:2023年07月14日阅读:1
# 查看redis相关信息
127.0.0.1:6379> info
# 服务端信息
#  Server
# 版本号
redis_version:3.2.12
# redis版本控制安全hash算法
redis_git_sha1:00000000
# redis版本控制脏数据
redis_git_dirty:0
# redis建立id
redis_build_id:3b947b91b7c31389
# 运行模式:单机(如果是集群:cluster)
redis_mode:standalone
# redis所在宿主机的操作系统
os:Linux 2.6.32-431.el6.x86_64 x86_64
# 架构(64位)
arch_bits:64
# redis事件循环机制
multiplexing_api:epoll
# GCC的版本
gcc_version:4.4.7
# redis进程的pid
process_id:33007
# redis服务器的随机标识符(用于sentinel和集群)
run_id:46b07234cf763cab04d1b31433b94e31b68c6e26
# redis的端口
tcp_port:6379
# redis服务器的运行时间(单位秒)
uptime_in_seconds:318283
# redis服务器的运行时间(单位天)
uptime_in_days:3
# redis内部调度(进行关闭timeout的客户端,删除过期key等等)频率,程序规定serverCron每秒运行10次
hz:10
# 自增的时钟,用于LRU管理,该时钟100ms(hz=10,因此每1000ms/10=100ms执行一次定时任务)更新一次
lru_clock:13601047
# 服务端运行命令路径
executable:/application/redis-3.2.12/redis-server
# 配置文件路径
config_file:/etc/redis/6379/redis.conf

# 客户端信息
#  Clients
# 已连接客户端的数量(不包括通过slave的数量)
connected_clients:2
# # 当前连接的客户端当中,最长的输出列表,用client list命令观察omem字段最大值
client_longest_output_list:0
# 当前连接的客户端当中,最大输入缓存,用client list命令观察qbuf和qbuf-free两个字段最大值
client_biggest_input_buf:0
# 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量
blocked_clients:0

# 内存信息
#  Memory
# 由redis分配器分配的内存总量,以字节为单位
used_memory:845336
# 以人类可读的格式返回redis分配的内存总量
used_memory_human:825.52K
# 从操作系统的角度,返回redis已分配的内存总量(俗称常驻集大小)。这个值和top命令的输出一致
used_memory_rss:1654784
# 以人类可读方式,返回redis已分配的内存总量
used_memory_rss_human:1.58M
# redis的内存消耗峰值(以字节为单位)
used_memory_peak:845336
# 以人类可读的格式返回redis的内存消耗峰值
used_memory_peak_human:825.52K
# 整个系统内存
total_system_memory:1028517888
# 以人类可读的格式,显示整个系统内存
total_system_memory_human:980.87M
# Lua脚本存储占用的内存
used_memory_lua:37888
# 以人类可读的格式,显示Lua脚本存储占用的内存
used_memory_lua_human:37.00K
# Redis实例的最大内存配置
maxmemory:0
# 以人类可读的格式,显示Redis实例的最大内存配置
maxmemory_human:0B
# 当达到maxmemory时的淘汰策略
maxmemory_policy:noeviction
# 内存分裂比例(used_memory_rss/ used_memory)
mem_fragmentation_ratio:1.96
# 内存分配器
mem_allocator:jemalloc-4.0.3

# 持久化信息
#  Persistence
# 服务器是否正在载入持久化文件
loading:0
# 离最近一次成功生成rdb文件,写入命令的个数,即有多少个写入命令没有持久化
rdb_changes_since_last_save:131
# 服务器是否正在创建rdb文件
rdb_bgsave_in_progress:0
# 最近一次rdb持久化保存时间
rdb_last_save_time:1540009420
# 最近一次rdb持久化是否成功
rdb_last_bgsave_status:ok
# 最近一次成功生成rdb文件耗时秒数
rdb_last_bgsave_time_sec:-1
# 如果服务器正在创建rdb文件,那么这个域记录的就是当前的创建操作已经耗费的秒数
rdb_current_bgsave_time_sec:-1
# 是否开启了aof
aof_enabled:0
# 标识aof的rewrite操作是否在进行中
aof_rewrite_in_progress:0
# rewrite任务计划,当客户端发送bgrewriteaof指令,如果当前rewrite子进程正在执行,那么将客户端请求的bgrewriteaof变为计划任务,待aof子进程结束后执行rewrite
aof_rewrite_scheduled:0
# 最近一次aof rewrite耗费的时长
aof_last_rewrite_time_sec:-1
# 如果rewrite操作正在进行,则记录所使用的时间,单位秒
aof_current_rewrite_time_sec:-1
# 上次bgrewriteaof操作的状态
aof_last_bgrewrite_status:ok
# 上次aof写入状态
aof_last_write_status:ok

# 统计信息
#  Stats
# 新创建连接个数,如果新创建连接过多,过度地创建和销毁连接对性能有影响,说明短连接严重或连接池使用有问题,需调研代码的连接设置
total_connections_received:19
# redis处理的命令数
total_commands_processed:299
# redis当前的qps,redis内部较实时的每秒执行的命令数
instantaneous_ops_per_sec:0
# redis网络入口流量字节数
total_net_input_bytes:10773
# redis网络出口流量字节数
total_net_output_bytes:97146
# redis网络入口kps
instantaneous_input_kbps:0.00
# redis网络出口kps
instantaneous_output_kbps:0.00
# 拒绝的连接个数,redis连接个数达到maxclients限制,拒绝新连接的个数
rejected_connections:0
# 主从完全同步次数
sync_full:0
# 主从完全同步成功次数
sync_partial_ok:0
# 主从完全同步失败次数
sync_partial_err:0
# 运行以来过期的key的数量
expired_keys:5
# 过期的比率
evicted_keys:0
# 命中次数
keyspace_hits:85
# 没命中次数
keyspace_misses:17
# 当前使用中的频道数量
pubsub_channels:0
# 当前使用的模式的数量
pubsub_patterns:0
# 最近一次fork操作阻塞redis进程的耗时数,单位微秒
latest_fork_usec:0
# 是否已经缓存了到该地址的连接
migrate_cached_sockets:0

# 主从复制信息
#  Replication
# 角色主库
role:master
# 连接slave的个数
connected_slaves:0
# 主从同步偏移量,此值如果和上面的offset相同说明主从一致没延迟,与master_replid可被用来标识主实例复制流中的位置
master_repl_offset:0
# 复制积压缓冲区是否开启
repl_backlog_active:0
# 复制积压缓冲大小
repl_backlog_size:1048576
# 复制缓冲区里偏移量的大小
repl_backlog_first_byte_offset:0
# 此值等于 master_repl_offset - repl_backlog_first_byte_offset,该值不会超过repl_backlog_size的大小
repl_backlog_histlen:0

# CPU信息
#  CPU
# 将所有redis主进程在内核态所占用的CPU时求和累计起来
used_cpu_sys:203.44
# 将所有redis主进程在用户态所占用的CPU时求和累计起来
used_cpu_user:114.57
# 将后台进程在内核态所占用的CPU时求和累计起来
used_cpu_sys_children:0.00
# 将后台进程在用户态所占用的CPU时求和累计起来
used_cpu_user_children:0.00

# 集群信息
#  Cluster
# 实例是否启用集群模式
cluster_enabled:0

# 库相关统计信息
#  Keyspace
# db0的key的数量,以及带有生存期的key的数,平均存活时间
db0:keys=17,expires=0,avg_ttl=0

# 单独查看某一个信息(例:查看CPU信息)
127.0.0.1:6379> info cpu
#  CPU
used_cpu_sys:203.45
used_cpu_user:114.58
used_cpu_sys_children:0.00
used_cpu_user_children:0.00


127.0.0.1:6379> CLIENT LIST
id=2 addr=127.0.0.1:38988 fd=7 name= age=86036 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
id=4 addr=127.0.0.1:38992 fd=8 name= age=52 idle=52 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=command


# 查看redis所有的配置
127.0.0.1:6379> CONFIG GET *
  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) ""
  .......


# 查看当前 Redis 有多少数据
127.0.0.1:6379> DBSIZE
(integer) 2341518


在 Redis 中也是有库这个概念的,不过不同于MySQL,Redis的库是默认的,并不是我们手动去创建的,在Redis中一共有16(0-15)个库。在MySQL中进入某一个库,我们需要使用use dbname,在Redis中,只需要select即可。默认情况下,我们是在 0 库中进行操作,每个库之间都是隔离的。

# 切换1库
127.0.0.1:6379> select 1
OK
# 查看1库数据
127.0.0.1:6379[1]> DBSIZE
(integer) 0


# flushdb(清空当前库)
127.0.0.1:6379[1]> keys *
1) "k2"
2) "k1"
127.0.0.1:6379[1]> FLUSHDB
OK
127.0.0.1:6379[1]> keys *
(empty list or set)

# flushall(清空所有库数据)
127.0.0.1:6379[1]> FLUSHALL
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
(empty list or set)


# 窗口 1 执行
127.0.0.1:6379> MONITOR
OK

# 窗口 2 执行命令
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> del k1
(integer) 1

# 窗口 1 查看
1596591822.059876 [0 127.0.0.1:38988] "set" "k1" "v1"
1596591827.003306 [0 127.0.0.1:38988] "set" "k2" "v2"
1596591830.524161 [0 127.0.0.1:38988] "set" "k3" "v3"
1596591833.501550 [0 127.0.0.1:38988] "del" "k1"

# 将监控的内容写到文件方法(类似于 MySQL 一般查询日志)
[root@db01 ~]#  redis-cli MONITOR >> /tmp/caozuo.log &
[1] 17545
[root@db01 ~]#  tail -f /tmp/caozuo.log