Redis服务器

来源:互联网 发布:区县网络社会组织调研 编辑:程序博客网 时间:2024/06/03 17:30

Redis 服务器

Redis 服务器命令主要是用于管理 redis 服务。

一般 Redis 服务器信息,包含以下域:

  • server :

    • redis_version : Redis 服务器版本
    • redis_git_sha1 : Git SHA1
    • redis_git_dirty : Git dirty flag
    • os : Redis 服务器的宿主操作系统
    • arch_bits : 架构(32 或 64 位)
    • multiplexing_api : Redis 所使用的事件处理机制
    • gcc_version : 编译 Redis 时所使用的 GCC 版本
    • process_id : 服务器进程的 PID
    • run_id : Redis 服务器的随机标识符(用于 Sentinel 和集群)
    • tcp_port : TCP/IP 监听端口
    • uptime_in_seconds : 自 Redis 服务器启动以来,经过的秒数
    • uptime_in_days : 自 Redis 服务器启动以来,经过的天数
    • lru_clock : 以分钟为单位进行自增的时钟,用于 LRU 管理
  • clients : 已连接客户端信息,包含以下域:

    • connected_clients : 已连接客户端的数量(不包括通过从属服务器连接的客户端)
    • client_longest_output_list : 当前连接的客户端当中,最长的输出列表
    • client_longest_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_lua : Lua 引擎所使用的内存大小(以字节为单位)
    • mem_fragmentation_ratio : used_memory_rss 和 used_memory 之间的比率
    • mem_allocator : 在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。

    在理想情况下, used_memory_rss 的值应该只比 used_memory 稍微高一点儿。

    当 rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。

    内存碎片的比率可以通过 mem_fragmentation_ratio 的值看出。

    当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。

    当 Redis 释放内存时,分配器可能会,也可能不会,将内存返还给操作系统。

    如果 Redis 释放了内存,却没有将内存返还给操作系统,那么 used_memory 的值可能和操作系统显示的 Redis 内存占用并不一致。

    查看 used_memory_peak 的值可以验证这种情况是否发生。

  • persistence : RDB 和 AOF 的相关信息

  • stats : 一般统计信息

  • replication : 主/从复制信息

  • cpu : CPU 计算量统计信息

  • commandstats : Redis 命令统计信息

  • cluster : Redis 集群信息

  • keyspace : 数据库相关的统计信息


Redis服务器命令

1、BGREWRITEAOF ----异步执行一个AOF(append only file)文件重写操作

   如果 Bgrewriteaof 执行失败,也不会有任何数据丢失,因为旧的 AOF 文件在 Bgrewriteaof 成功之前不会被修改。

   从 Redis 2.4 开始, AOF 重写由 Redis 自行触发, BGREWRITEAOF 仅仅用于手动触发重写操作。

2、BGSAVE ---将数据集异步保存到磁盘

    Redis父进程继续服务客户,子进程在磁盘上节省数据库,然后退出。客户端检查LASTSAVE命令是否操作成功。

3、CLIENT KILL [ip:port] [ID client_id] ----关闭客户端链接

     成功关闭时,返回 OK

4、CLIENT LIST ----返回所有连接到服务器的客户端信息和统计数据

命令返回多行字符串,这些字符串按以下形式被格式化:

  • 每个已连接客户端对应一行(以 LF 分割)
  • 每行字符串由一系列 属性=值 形式的域组成,每个域之间以空格分开

以下是域的含义:

  • addr : 客户端的地址和端口
  • fd : 套接字所使用的文件描述符
  • age : 以秒计算的已连接时长
  • idle : 以秒计算的空闲时长
  • flags : 客户端 flag
  • db : 该客户端正在使用的数据库 ID
  • sub : 已订阅频道的数量
  • psub : 已订阅模式的数量
  • multi : 在事务中被执行的命令数量
  • qbuf : 查询缓冲区的长度(字节为单位, 0 表示没有分配查询缓冲区)
  • qbuf-free : 查询缓冲区剩余空间的长度(字节为单位, 0 表示没有剩余空间)
  • obl : 输出缓冲区的长度(字节为单位, 0 表示没有分配输出缓冲区)
  • oll : 输出列表包含的对象数量(当输出缓冲区没有剩余空间时,命令回复会以字符串对象的形式被入队到这个队列里)
  • omem : 输出缓冲区和输出列表占用的内存总量
  • events : 文件描述符事件
  • cmd : 最近一次执行的命令

客户端 flag 可以由以下部分组成:

  • O : 客户端是 MONITOR 模式下的附属节点(slave)
  • S : 客户端是一般模式下(normal)的附属节点
  • M : 客户端是主节点(master)
  • x : 客户端正在执行事务
  • b : 客户端正在等待阻塞事件
  • i : 客户端正在等待 VM I/O 操作(已废弃)
  • d : 一个受监视(watched)的键已被修改, EXEC 命令将失败
  • c : 在将回复完整地写出之后,关闭链接
  • u : 客户端未被阻塞(unblocked)
  • A : 尽可能快地关闭连接
  • N : 未设置任何 flag

文件描述符事件可以是:

  • r : 客户端套接字(在事件 loop 中)是可读的(readable)
  • w : 客户端套接字(在事件 loop 中)是可写的(writeable)
5、CLIENT GETNAME ----获取连接的名字

   用于返回 CLIENT SETNAME 命令为连接设置的名字。因为新创建的连接默认是没有名字的, 对于没有名字的连接, CLIENT GETNAME 返回空白回复。

6、CLIENT PAUSE timeout----指定时间内停止处理来自客户端的命令

   返回 OK。如果 timeout 参数是非法的返回错误。

7、CLIENT SETNAME connection_name -----设置当前连接的名称

8、CLUSTER SLOTS -----获取集群节点的映射数组

   返回IP/端口嵌套的列表数组。

9、COMMAND ----获取redis命令详情数组

   返回嵌套的Redis命令的详细信息列表。列表顺序是随机的。

10、COMMAND COUNT ----获取Redis命令总数

11、COMMAND GETKEYS ----获取所有的key

redis 127.0.0.1:6379> COMMAND GETKEYS MSET a b c d e f 1) "a"2) "c"3) "e"
12、TIME ----返回当前服务器时间

   返回一个包含两个字符串的列表: 第一个字符串是当前时间(以 UNIX 时间戳格式表示),而第二个字符串是当前这一秒钟已经逝去的微秒数。

13、COMMAND INFO command_name [command_name ....] -----获取指定redis命令描述的数组

      redis 127.0.0.1:6379> COMMAND INFO get set eval
14、CONFIG GET paraeter ----获取指定配置参数的值

15、CONFIG REWRITE ----对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写

      CONFIG SET 命令可以对服务器的当前配置进行修改, 而修改后的配置可能和 redis.conf 文件中所描述的配置不一样,

      CONFIG REWRITE 的作用就是通过尽可能少的修改, 将服务器当前所使用的配置记录到 redis.conf 文件中。

16、CONFIG SET parameter value ----修改redis配置参数,无需重启。

17、CONFIG RESETSTAT -----重置 INFO 命令中的某些统计数据

INFO 命令中的某些统计数据,包括:

  • Keyspace hits (键空间命中次数)
  • Keyspace misses (键空间不命中次数)
  • Number of commands processed (执行命令的次数)
  • Number of connections received (连接服务器的次数)
  • Number of expired keys (过期key的数量)
  • Number of rejected connections (被拒绝的连接数量)
  • Latest fork(2) time(最后执行 fork(2) 的时间)
  • The aof_delayed_fsync counter(aof_delayed_fsync 计数器的值)

18、DBSIZE ----返回当前数据库的key的数量

19、DEBUG OBJECT key ---- 获取key的调试信息

    当 key 存在时,返回有关信息。当 key 不存在时,返回一个错误。

20、DEBUG SEGFAULT ----让redis服务崩溃

   执行一个非法的内存访问从而让 Redis 崩溃,仅在开发时用于 BUG 调试。

21、FLUSHALL ----删除所有数据库的所有key

22、FLUSHDB ----删除当前数据库的所有key

23、INFO [section] ----获取服务器的各种信息和统计数值

    通过给定可选的参数 section ,可以让命令只返回某一部分的信息

24、LASTSAVE----返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示

25、MONITOR -----实时打印出 Redis 服务器接收到的命令,调试用

26、ROLE ----返回主从实例所属的角色,角色有master, slave, sentinel。

     返回一个数组:第一个参数是 master, slave, sentinel 三个中的一个。

27、SAVE ----将数据同步保存到磁盘。

   执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。

28、SHUTDOWN [NOSAVE] [SAVE] -----将数据集同步保存到磁盘,然后关闭服务器

   Shutdown 命令执行以下操作:

  • 停止所有客户端
  • 如果有至少一个保存点在等待,执行 SAVE 命令
  • 如果 AOF 选项被打开,更新 AOF 文件
  • 关闭 redis 服务器(server)

29、SLAVEOF host port ----使服务器成为另一个实例的从属,或将其提升作为主服务器

      如果当前服务器已经是某个主服务器(master server)的从属服务器,那么执行 SLAVEOF host port 将使当前服务器停止对旧主服务器的同步,丢弃旧数据集,转而开始对新主服务器进行同步。

       另外,对一个从属服务器执行命令 SLAVEOF NO ONE 将使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃。

       利用『 SLAVEOF NO ONE 不会丢弃同步所得数据集』这个特性,可以在主服务器失败的时候,将从属服务器用作新的主服务器,从而实现无间断运行。

30、SLOWLOG subcommand[argument ]----- 管理 redis 的慢日志

      查询执行时间指的是不包括像客户端响应(talking)、发送回复等 IO 操作,而单单是执行一个查询命令所耗费的时间。

      另外,slow log 保存在内存里面,读写速度非常快,因此你可以放心地使用它,不必担心因为开启 slow log 而损害 Redis 的速度。

31、SYNC ---- 用于复制功能(replication)的内部命令,用于同步主从服务器。