Redis学习汇总

慢查询日志

1. 相关参数

  • slowlog-max-len

慢查询日志最大长度

  • slowlog-log-slower-than

慢查询界定时间,单位微妙

2. 命令

  • slowlog get
10) 1) (integer) 5            # 日志的唯一标识符
    2) (integer) 1602909107   # 执行命令时的UNIX时间戳 
    3) (integer) 1024         # 执行命令的时间,单位微妙
    4) 1) "CONFIG"            # 命令以及命令参数
       2) "GET"
       3) "*"

监视器

1. 命令

  • monitor
127.0.0.1:6379> monitor
OK

持久化

Redis支持RDB和AOF两种持久化机制,持久化功能有效地避免因进程 退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。

1. RDB

RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持 久化过程分为手动触发和自动触发。

手动触发

  • save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存 比较大的实例会造成长时间阻塞,线上环境不建议使用。
  • bgsave命令:Redis进程执行fork操作创建子进程,RDB持久化过程由子 进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短。

自动触发

  1. 使用save相关配置,如“save m n”。表示m秒内数据集存在n次修改时,自动触发bgsave。
  2. 如果从节点执行全量复制操作,主节点自动执行bgsave生成RDB文件并发送给从节点。
  3. 执行debug reload命令重新加载Redis时,也会自动触发save操作。
  4. 默认情况下执行shutdown命令时,如果没有开启AOF持久化功能则 自动执行bgsave。

优点

  • RDB是一个紧凑压缩的二进制文件,代表Redis在某个时间点上的数据 快照。非常适用于备份,全量复制等场景。比如每6小时执行bgsave备份, 并把RDB文件拷贝到远程机器或者文件系统中(如hdfs),用于灾难恢复。
  • Redis加载RDB恢复数据远远快于AOF的方式。

缺点

  • RDB方式数据没办法做到实时持久化/秒级持久化。因为bgsave每次运 行都要执行fork操作创建子进程,属于重量级操作,频繁执行成本过高。
  • RDB文件使用特定二进制格式保存,Redis版本演进过程中有多个格式 的RDB版本,存在老版本Redis服务无法兼容新版RDB格式的问题。

2. AOF

AOF(append only file)持久化:以独立日志的方式记录每次写命令, 重启时再重新执行AOF文件中的命令达到恢复数据的目的。AOF的主要作用 是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式。

使用AOF

  • 开启AOF功能需要设置配置:appendonly yes,默认不开启。
  • AOF命令写入的内容直接是文本协议格式。

你可能感兴趣的:(redis)