24.Redis命令管理
Redis用专门管理Redis服务器的命令,下面就一一介绍:
1.bgrewriteaof
redis bgrewriteaof 命令用于异步执行一个AOF 文件重新操作,即使该命令执行失败,也不会有任何的数据丢失,因为旧的aof文件在bgrewriteaof成功之前不会被修改,从redis2.4开始,AOF重写由redis执行触发,bgrewriteaof仅仅用于手工触发重写操作。
2.bgsave [schedule]
将数据保存在磁盘上(主要是针对RDB持久化),该命令会fork一个子进程来执行RDB持久化,不影响父进程执行其他命令,使用这个命令注意:1)当redis正在执行aof rewrite过程时或者已经有一个后台保存命令正在进行时,执行这个命令会发生报错。2)针对这种情况可以使用bgsave schedule命令,当AOF重写进行时,它会计划在下一次机会时运行后台保存。
3.client getname|setname
client getname 命令用于返回client setname命令为当前连接设置的名字。因为新创建的连接默认是没有名字的,对于名字的连接,该命令返回的空白。
client setname 命令用于为当前连接设置一个名称:比如client sentname link1
4.client list
client list 命令用户返回所有连接到服务器的客户端信息和统计数据。
id=19 addr=127.0.0.1:33834 fd=10 name= age=0 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 events=r cmd=client user=default
- 每个已连接客户端对应一行,每行字符串由一系列属性=值(propery=value)形式的域组成
- 具体信息见官网:https://redis.io/commands/client-list/
5.client kill
client kill 命令用于关闭地址为ip:port 的客户端连接
6.config get
config get 命令用来获取redis服务器的配置参数,它支持正则匹配,可以通过config get * 查看redis所有支持的参数。
7.config set [parameter] [value]
config set 命令用来设置服务器的配置参数,该参数设置完了之后可以立即生效,但是不能重启redis实例,重启redis实例时候,该配置失效
8.config rewrite
config rewrite 命令对启动redis服务器时执所指定的redis.conf配置文件进行改写
注意:config set 命令可以对服务器的当前配置进行修改,而修改后的配置可能和redis.conf文件中所描述的配置不一样,config rewrite的作用就是通过尽可能少的修改,将服务器当前所使用的配置记录到redis.conf文件中。
9.dbsize
DBSIZE返回当前数据库中key的数量
10.flushall
清空整个redis中数据(清空所有数据库的所有key,不仅仅是当前select的数据库)
flushall async(4.0以后的版本),支持在后台单独的线程执行删除key的操作而不阻塞redis,时间复杂度是O(N),N代表所有数据库中key的总数
11.flushdb
清空当前select数据库中的所有key
12.info命令
info命令用于返回关于redis服务器的各种信息和统计数值
主要有以下几个部分组成:
server
: 查看 Redis 服务器信息,如 Redis 的版本clients
: 客户端的连接部分memory
: 内存消耗相关信息persistence
: RDB和AOF相关信息stats
: 一般统计replication
: 主/从复制信息cpu
: 统计CPU的消耗commandstats
: Redis命令统计cluster
: Redis集群信息keyspace
: 数据库的相关统计modules
: Module 相关信息
server部分:

redis_version: Redis 服务器版本 redis_git_sha1: Git SHA1 redis_git_dirty: Git dirty flag redis_build_id: 构建ID redis_mode: 服务器模式(standalone,sentinel或者cluster) os: Redis 服务器的宿主操作系统 arch_bits: 架构(32 或 64 位) multiplexing_api: Redis 所使用的事件处理机制 atomicvar_api: Redis使用的Atomicvar API gcc_version: 编译 Redis 时所使用的 GCC 版本 process_id: 服务器进程的 PID run_id: Redis 服务器的随机标识符(用于 Sentinel 和集群) tcp_port: TCP/IP 监听端口 uptime_in_seconds: 自 Redis 服务器启动以来,经过的秒数 uptime_in_days: 自 Redis 服务器启动以来,经过的天数 hz: 服务器的频率设置 lru_clock: 以分钟为单位进行自增的时钟,用于 LRU 管理 executable: 服务器的可执行文件路径 config_file: 配置文件路径
client部分:
connected_clients: 已连接客户端的数量(不包括通过从属服务器连接的客户端)
client_longest_output_list: 当前连接的客户端当中,最长的输出列表
client_biggest_input_buf: 当前连接的客户端当中,最大输入缓存
blocked_clients: 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量
memory部分:

used_memory: 由 Redis 分配器分配的内存总量,以字节(byte)为单位 used_memory_human: 以人类可读的格式返回 Redis 分配的内存总量 used_memory_rss: 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。 used_memory_peak: Redis 的内存消耗峰值(以字节为单位) used_memory_peak_human: 以人类可读的格式返回 Redis 的内存消耗峰值 used_memory_peak_perc: 使用内存占峰值内存的百分比 used_memory_overhead: 服务器为管理其内部数据结构而分配的所有开销的总和(以字节为单位) used_memory_startup: Redis在启动时消耗的初始内存大小(以字节为单位) used_memory_dataset: 以字节为单位的数据集大小(usedmemory减去usedmemory_overhead) used_memory_dataset_perc: usedmemorydataset占净内存使用量的百分比(usedmemory减去usedmemory_startup) total_system_memory: Redis主机具有的内存总量 total_system_memory_human: 以人类可读的格式返回 Redis主机具有的内存总量 used_memory_lua: Lua 引擎所使用的内存大小(以字节为单位) used_memory_lua_human: 以人类可读的格式返回 Lua 引擎所使用的内存大小 maxmemory: maxmemory配置指令的值 maxmemory_human: 以人类可读的格式返回 maxmemory配置指令的值 maxmemory_policy: maxmemory-policy配置指令的值 mem_fragmentation_ratio: used_memory_rss 和 used_memory 之间的比率 mem_allocator: 在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。 active_defrag_running: 指示活动碎片整理是否处于活动状态的标志 lazyfree_pending_objects: 等待释放的对象数(由于使用ASYNC选项调用UNLINK或FLUSHDB和FLUSHALL)
在理想情况下, usedmemoryrss 的值应该只比 used_memory 稍微高一点儿。
当 rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。
内存碎片的比率可以通过 memfragmentationratio 的值看出。
当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。
由于Redis无法控制其分配的内存如何映射到内存页,因此常住内存(usedmemoryrss)很高通常是内存使用量激增的结果。
当 Redis 释放内存时,内存将返回给分配器,分配器可能会,也可能不会,将内存返还给操作系统。
如果 Redis 释放了内存,却没有将内存返还给操作系统,那么 used_memory 的值可能和操作系统显示的 Redis 内存占用并不一致。
查看 usedmemorypeak 的值可以验证这种情况是否发生。
要获得有关服务器内存的其他内省信息,可以参考MEMORY STATS
和MEMORY DOCTOR
。
persistence部分:
loading: 指示转储文件(dump)的加载是否正在进行的标志 rdb_changes_since_last_save: 自上次转储以来的更改次数 rdb_bgsave_in_progress: 指示RDB文件是否正在保存的标志 rdb_last_save_time: 上次成功保存RDB的基于纪年的时间戳 rdb_last_bgsave_status: 上次RDB保存操作的状态 rdb_last_bgsave_time_sec: 上次RDB保存操作的持续时间(以秒为单位) rdb_current_bgsave_time_sec: 正在进行的RDB保存操作的持续时间(如果有) rdb_last_cow_size: 上次RDB保存操作期间copy-on-write分配的字节大小 aof_enabled: 表示AOF记录已激活的标志 aof_rewrite_in_progress: 表示AOF重写操作正在进行的标志 aof_rewrite_scheduled: 表示一旦进行中的RDB保存操作完成,就会安排进行AOF重写操作的标志 aof_last_rewrite_time_sec: 上次AOF重写操作的持续时间,以秒为单位 aof_current_rewrite_time_sec: 正在进行的AOF重写操作的持续时间(如果有) aof_last_bgrewrite_status: 上次AOF重写操作的状态 aof_last_write_status: 上一次AOF写入操作的状态 aof_last_cow_size: 上次AOF重写操作期间copy-on-write分配的字节大小
changes_since_last_save
指的是从上次调用SAVE
或者BGSAVE
以来,在数据集中产生某种变化的操作的数量。
如果启用了AOF,则会添加以下这些额外的字段:
aof_current_size: 当前的AOF文件大小
aof_base_size: 上次启动或重写时的AOF文件大小
aof_pending_rewrite: 指示AOF重写操作是否会在当前RDB保存操作完成后立即执行的标志。
aof_buffer_length: AOF缓冲区大小
aof_rewrite_buffer_length: AOF重写缓冲区大小
aof_pending_bio_fsync: 在后台IO队列中等待fsync处理的任务数
aof_delayed_fsync: 延迟fsync计数器
如果正在执行加载操作,将会添加这些额外的字段
loading_start_time: 加载操作的开始时间(基于纪元的时间戳)
loading_total_bytes: 文件总大小
loading_loaded_bytes: 已经加载的字节数
loading_loaded_perc: 已经加载的百分比
loading_eta_seconds: 预计加载完成所需的剩余秒数
stats部分:
total_connections_received: 服务器接受的连接总数 total_commands_processed: 服务器处理的命令总数 instantaneous_ops_per_sec: 每秒处理的命令数 rejected_connections: 由于maxclients限制而拒绝的连接数 expired_keys: key到期事件的总数 evicted_keys: 由于maxmemory限制而导致被驱逐的key的数量 keyspace_hits: 在主字典中成功查找到key的次数 keyspace_misses: 在主字典中查找key失败的次数 pubsub_channels: 拥有客户端订阅的全局pub/sub通道数 pubsub_patterns: 拥有客户端订阅的全局pub/sub模式数 latest_fork_usec: 最新fork操作的持续时间,以微秒为单位
replication部分:
role: 如果实例不是任何节点的从节点,则值是”master”,如果实例从某个节点同步数据,则是”slave”。 请注意,一个从节点可以是另一个从节点的主节点(菊花链)。
如果实例是从节点,则会提供以下这些额外字段:
master_host: 主节点的Host名称或IP地址
master_port: 主节点监听的TCP端口
master_link_status: 连接状态(up或者down)
master_last_io_seconds_ago: 自上次与主节点交互以来,经过的秒数
master_sync_in_progress: 指示主节点正在与从节点同步
如果sync操作正在进行,则会提供以下字段
master_sync_left_bytes: 同步完成前剩余的字节数
master_sync_last_io_seconds_ago: 在SYNC操作期间自上次传输IO以来的秒数
如果主从节点之间的连接断开了,则会提供一个额外的字段
master_link_down_since_seconds
: 自连接断开以来,经过的秒数
以下字段将始终提供:
connected_slaves
: 已连接的从节点数- 对于每个从节点,都会添加以下行: slavexxx:id, 地址,端口号,状态
cpu部分:
used_cpu_sys: 由Redis服务器消耗的系统CPU
used_cpu_user: 由Redis服务器消耗的用户CPU
used_cpu_sys_children: 由后台进程消耗的系统CPU
used_cpu_user_children: 由后台进程消耗的用户CPU
commandstats部分提供基于命令类型的统计,包含调用次数,这些命令消耗的总CPU时间,以及每个命令执行所消耗的平均CPU。
对于每一个命令类型,添加以下行:
cmdstat_XXX
: calls=XXX,usec=XXX,usec_per_call=XXX
cluster部分:该部分当前只包含一个唯一的字段:
cluster_enabled: 表示已启用Redis集群
keyspace部分提供有关每个数据库的主字典的统计,统计信息是key的总数和带有过期key的总数。
对于每个数据库,提供以下行: dbxxx: keys=xxx,expires=xxx
13.lastsave
以Unix时间戳格式返回最近一次Redis成功将数据保存到磁盘的时间。lastsave通常被用来检查bgsave命令是否执行完,通常是每隔几秒中看一下lastsave的结果是否发生变化。
14.monitor
monitor命令用于实时打印出redis服务器接受到的命令,用来帮助我们知道数据库正在做什么
[root@redis ~]# redis-cli -p 6379 monitor OK 1665845957.836138 [0 127.0.0.1:33814] "PUBLISH" "__sentinel__:hello" "127.0.0.1,26381,7017e04edb426b7441cf3e99bea5a670bc03a9b3,5,mymaster,127.0.0.1,6380,5" 1665845957.836178 [0 127.0.0.1:6380] "PUBLISH" "__sentinel__:hello" "127.0.0.1,26381,7017e04edb426b7441cf3e99bea5a670bc03a9b3,5,mymaster,127.0.0.1,6380,5" 1665845958.302737 [0 127.0.0.1:33810] "PUBLISH" "__sentinel__:hello" "127.0.0.1,26380,903fdf6dc8ec5a23bb199f3e4024c8948ebd0635,5,mymaster,127.0.0.1,6380,5" 1665845958.302778 [0 127.0.0.1:6380] "PUBLISH" "__sentinel__:hello" "127.0.0.1,26380,903fdf6dc8ec5a23bb199f3e4024c8948ebd0635,5,mymaster,127.0.0.1,6380,5" 1665845958.511976 [0 127.0.0.1:33810] "PING" 1665845958.662704 [0 127.0.0.1:33806] "PING" 1665845958.725518 [0 127.0.0.1:33806] "PUBLISH" "__sentinel__:hello" "127.0.0.1,26379,89a8fab95227f2389956f9a44e08369885abb0bf,5,mymaster,127.0.0.1,6380,5" 1665845958.725843 [0 127.0.0.1:6380] "PUBLISH" "__sentinel__:hello" "127.0.0.1,26379,89a8fab95227f2389956f9a44e08369885abb0bf,5,mymaster,127.0.0.1,6380,5" 1665845958.747128 [0 127.0.0.1:33814] "PING"
......
注意:monitor会降低redis的性能
15.shutdown[nosave|save]
- 停止所有客户端
- 如果配置了save策略,则执行一个阻塞的save命令
- 如果开启了aof,则刷新aof文件
- 关闭redis服务进程(redis-server)
16.slaveof host port
slaveof 命令可以将当前服务器转变为指定服务器的从属服务器(slave server)
slaveof no one 用来停止复制
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」