redis 有用的命令

Posted 黄光跃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis 有用的命令相关的知识,希望对你有一定的参考价值。

模糊删除

del 只能完整的 key,模糊批量删除的一种方式(比如删除user:打头的):EVAL "return redis.call(\'del\', unpack(redis.call(\'keys\', ARGV[1])))" 0 \'user:*

死磕 Redis----- info 命令详解

原文:https://www.topjava.cn/category/1391389927996002304chenssy


Redis 提供了一个非常有用的查看状态信息的命令:info。它以一种易于理解和阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。使用方法有如下三种:

info:部分Redis系统状态统计信息。
info all:全部Redis系统状态统计信息。
info section:某一块的系统状态统计信息,其中section可以忽略大小写。

详细内容如下表格:

参数名说明
server获取 server 信息
clients获取 clients 信息,如客户端连接数等
memory获取 server 的内存信息,包括当前内存消耗、内存使用峰值
persistence获取 server 的持久化配置信息
stats获取 server 的一些基本统计信息,如处理过的连接数量等
replication获取 server 的主从配置信息
cpu获取 server 的 CPU 使用信息
keyspace获取 server 中各个 DB 的 key 的数量
cluster获取集群节点信息,仅在开启集群后可见
commandstas获取每种命令的统计信息

其中 memory,stats,clients,keyspace 是 Redis 运行时经常要关注的信息。

server

获取 server 信息,包括 version, OS, port 等信息

属性名属性值说明
redis_version5.0.3Redis 服务版本号
redis_git_sha100000000Git SGA1
redis_git_dirty0Git dirty flag
redis_build_id89e87c8197752890Redis build ID
redis_modestandalone运行模式,分为:standalone、sentinel、cluster
osDarwin 18.2.0 x86_64Redis 所在机器的操作系统
arch_bits64架构(32位或者64位)
multiplexing_apikqueueRedis 所使用的事件处理机制
atomicvar_apiatomic-builtinAtomicvar API
gcc_version4.2.1编译 Redis 时所使用的 GCC 版本
process_id40163服务进程 ID
run_idc4f8bb49f8214f406725136e6f589b46502a0e00run_id
tcp_port6379监听端口
uptime_in_seconds496059自 Redis 服务器启动已来,运行的秒数
uptime_in_days5自 Redis 服务启动已来,运行的天数
hz10serverCron 每秒运行次数
configured_hz10
lru_clock5452491以分钟为单位进行自增的时钟,用于 LRU 管理
executable/…/redis-5.0.3/src/./redis-server运行文件
config_file/…/redis-5.0.3/redis.conf配置文件

clients

获取 clients 信息,如客户端连接数等

属性名属性值说明
connected_clients1当前客户端连接数
client_recent_max_input_buffer2当前连接的客户端当中,最大输入缓存
client_recent_max_output_buffer0当前连接的客户端当中,最长的输出列表
blocked_clients0正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量

memory

获取 server 的内存信息,包括当前内存消耗、内存使用峰值

属性名属性值说明
used_memory18813680由 redis 分配器(标准libc,jemalloc或其他分配器,例如tcmalloc)分配的内存总量,以字节(byte)为单位
used_memory_human17.94Mredis 分配的内存总量
used_memory_rss1945600从操作系统的角度,Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top、ps 等命令的输出一致。
used_memory_rss_human1.86M操作系统角度,返回 redis 分配的内存总量
used_memory_peak18900752redis 的内存消耗峰值(以字节为单位)
used_memory_peak_human18.03MRedis 的内存消耗峰值
used_memory_peak_perc99.54%used_memory_peak在used_memory中所占的百分比
used_memory_overhead11135798分配用于管理其内部数据结构的所有开销的总字节数
used_memory_startup988448启动时消耗的初始内存量(以字节为单位)
used_memory_dataset7677882数据集的大小(以字节为单位,used_memory - used_memory_overhead)
used_memory_dataset_perc43.07%used_memory_dataset在净内存(used_memory-used_memory_startup)使用量中所占的百分比
allocator_allocated18780336分配器分配的内存
allocator_active1907712分配器活跃的内存
allocator_resident1907712分配器常驻的内存
total_system_memory34359738368主机拥有的内存总量
total_system_memory_human32.00G主机拥有的内存总量
used_memory_lua37888Lua引擎使用的字节数
used_memory_lua_human37.00K以可读的格式返回Lua引擎使用内存
used_memory_scripts0
used_memory_scripts_human0B
number_of_cached_scripts0
maxmemory0配置设置的最大可使用内存值,默认0,不限制
maxmemory_human0B以可读的格式返回最大可使用内存值
maxmemory_policynoeviction内存容量超过maxmemory后的处理策略,noeviction当内存使用达到阈值的时候,所有引起申请内存的命令会报错
allocator_frag_ratio0.10分配器的碎片率
allocator_frag_bytes18446744073692678992分配器的碎片大小(以字节为单位)
allocator_rss_ratio1.00分配器常驻内存比例
allocator_rss_bytes0分配器的常驻内存大小(以字节为单位)
rss_overhead_ratio1.02常驻内存开销比例
rss_overhead_bytes37888常驻内存开销大小(以字节为单位)
mem_fragmentation_ratio0.10内存碎片率,used_memory_rss 和 used_memory 之间的比率
mem_fragmentation_bytes-16834736内存碎片的大小(以字节为单位)
mem_not_counted_for_evict112被驱逐的大小
mem_replication_backlog0repl_backlog
mem_clients_slaves0clients_slaves
mem_clients_normal49694clients_normal
mem_aof_buffer112aof时,占用的缓冲
mem_allocatorlibc内存分配器(在编译时选择)
active_defrag_running0碎片整理是否处于活动状态
lazyfree_pending_objects0等待释放的对象数(由于使用ASYNC选项调用UNLINK或FLUSHDB和FLUSHALL)

Persistence

获取 server 的持久化配置信息

属性名属性值说明
loading0记录服务器是否正在载入持久化文件
rdb_changes_since_last_save0最近一次成功创建持久化文件之后,经过了多少秒
rdb_bgsave_in_progress0记录了服务器是否正在创建 RDB 文件
rdb_last_save_time1582508875最近一次成功创建 RDB 文件的 UNIX 时间戳
rdb_last_bgsave_statusok记录最近一次创建 RDB 文件的状态,是成功还是失败
rdb_last_bgsave_time_sec1记录了最近一次创建 RDB 文件耗费的秒数
rdb_current_bgsave_time_sec-1如果正在创建 RDB 文件,记录当前的创建操作已经耗费的秒数
rdb_last_cow_size0上一次RBD保存操作期间写时复制的大小(以字节为单位)
aof_enabled1AOF是否开启
aof_rewrite_in_progress0记录了是否正在创建 AOF 文件
aof_rewrite_scheduled0记录了 RDB 文件创建完毕之后,是否需要执行 AOF 重写操作
aof_last_rewrite_time_sec-1最近一次创建 AOF 文件耗费的秒数
aof_current_rewrite_time_sec-1如果正在创建 AOF 文件,那么记录当前的创建操作耗费的秒数
aof_last_bgrewrite_statusok记录了最近一次创建 AOF 文件的状态,是成功还是失败
aof_last_write_statusokAOF的最后写入操作的状态,是成功还是失败
aof_last_cow_size0上一次AOF保存操作期间写时复制的大小(以字节为单位)
aof_current_size4747340AOF 文件当前的大小
aof_base_size4746996最近一次启动或重写时的AOF文件大小
aof_pending_rewrite0记录了是否有 AOF 重写操作在等待 RDB 文件创建完毕之后执行
aof_buffer_length0AOF缓冲区的大小
aof_rewrite_buffer_length0AOF 重写缓冲区的大小
aof_pending_bio_fsync0后台 I/O 队列里面,等待执行的 fsync 数量
aof_delayed_fsync0被延迟的 fsync 调用数量,如果该值比较大,可以开启参数:no-appendfsync-on-rewrite=yes

stats

获取 server 的一些基本统计信息,如处理过的连接数量等

属性名属性值说明
total_connections_received11服务器接受的连接总数
total_commands_processed48服务器已执行的命令数量
instantaneous_ops_per_sec0服务器每秒钟执行的命令数量
total_net_input_bytes1312启动以来,流入的字节总数
total_net_output_bytes114800启动以来,流出的字节总数
instantaneous_input_kbps0.00接收输入的速率(每秒)
instantaneous_output_kbps0.00输出的速率(每秒)
rejected_connections0由于maxclients限制而被拒绝的连接数
sync_full0与slave full sync的次数
sync_partial_ok0接受的部分重新同步(psync)请求的数量
sync_partial_err0被拒绝的部分重新同步(psync)请求的数量
expired_keys0key过期事件总数
expired_stale_perc0.00过期的比率
expired_time_cap_reached_count0过期计数
evicted_keys0由于最大内存限制而被驱逐的key数量
keyspace_hits6key命中次数
keyspace_misses0key未命中次数
pubsub_channels0发布/订阅频道的数量
pubsub_patterns0发布/订阅的模式数量
latest_fork_usec803最近一次 fork() 操作耗费的毫秒数(以微秒为单位)
migrate_cached_sockets0为迁移而打开的套接字数
slave_expires_tracked_keys0跟踪过期key数量(仅适用于可写从)
active_defrag_hits0活跃碎片执行的值重新分配的数量
active_defrag_misses0活跃碎片执行的中止值重新分配的数量
active_defrag_key_hits0活跃碎片整理的key数
active_defrag_key_misses0活跃碎片整理过程跳过的key数

replication

获取 server 的主从配置信息

属性名属性值说明
rolemaster角色(master、slave),一个从服务器也可能是另一个服务器的主服务器
connected_slaves1连接slave实例的个数
slave0ip=127.0.0.1,port=6380,state=online,offset=14,lag=1连接的slave的信息
master_replid899b9814f2e841ca194dcc2620c83aa5df0abc10服务器的复制ID
master_replid20000000000000000000000000000000000000000第二服务器复制ID,用于故障转移后的PSYNC,用于集群等高可用之后主从节点的互换
master_repl_offset14复制偏移量1
second_repl_offset-1第二服务器复制偏移量2
repl_backlog_active1复制缓冲区状态
repl_backlog_size1048576复制缓冲区的大小(以字节为单位)
repl_backlog_first_byte_offset1复制缓冲区的偏移量,标识当前缓冲区可用范围
repl_backlog_histlen14复制缓冲区中数据的大小(以字节为单位)

如果是从节点会有如下信息:

属性名属性值说明
master_host127.0.0.1Master IP
master_port6379Master Port
master_link_statusupMaster的连接状态(up/down)
master_last_io_seconds_ago2最近一次主从交互之后的秒数
master_sync_in_progress0表示从服务器是否一直在与主服务器进行同步
slave_repl_offset14复制偏移量
slave_priority100从服务器的优先级
slave_read_only1从服务是否只读

CPU

获取 server 的 CPU 使用信息

属性名属性值说明
used_cpu_sys2.559564消耗的系统CPU
used_cpu_user0.878593消耗的用户CPU
used_cpu_sys_children0.001414后台进程占用的系统CPU
used_cpu_user_children0.000510后台进程占用的用户CPU

keyspace

获取 server 中各个 DB 的 key 的数量

属性名属性值说明
db0keys=4,expires=0,avg_ttl=0db0 数据库的基本信息

以上是关于redis 有用的命令的主要内容,如果未能解决你的问题,请参考以下文章

PHP redis使用命令

Zabbix监控Redis

死磕 Redis----- info 命令详解

死磕 Redis----- info 命令详解

用于 hget 和 hset 命令的 Redis 基准测试

Redis 内存