文章目录

  • 1. Redis-cli
  • 1.1 命令行模式
  • 1.1.1 直接使用命令行执行redis命令
  • 1.1.2 指定主机、端口、密码、数据库
  • 1.1.3 SSL/TLS支持
  • 1.1.4 从其他程序获取输入
  • 1.1.5 连续运行相同的命令
  • 1.1.6 CSV输出
  • 1.2 交互模式
  • 1.2.1 登录后连接其他实例
  • 1.2.2 断开重连
  • 1.3 特殊的操作模式
  • 1.3.1 监控状态
  • 1.3.2 扫描大键
  • 1.3.3 监控命令
  • 1.3.4 监控延迟
  • 1.3.5 RDB远程备份
  • 1.3.6 LRU模拟测试
  • 2. 配置
  • 3. 主从复制
  • 4. 持久化
  • 4.1 两种持久化方案
  • 4.2 RDB快照
  • 4.3 AOF文件
  • 4.4 使用
  • 5. 管理
  • 6. 安全性
  • 7. 访问控制
  • 8.


1. Redis-cli

  • 两种使用模式:命令行模式、交互模式

1.1 命令行模式

1.1.1 直接使用命令行执行redis命令

redis-cli incr mycounter
  • 结果输出到文件
redis-cli incr mycounter > /tmp/output.txt
  • 输出原始结果
$ redis-cli `--raw` incr mycounter
9
  • 输出可读性结果
$ redis-cli `--no-raw` incr mycounter
(integer) 7

1.1.2 指定主机、端口、密码、数据库

  • 参数指定
    redis-cli -h 主机 -p 端口 -a 密码 -n 数据库编号 命令redis-cli -h localhost -p 6379 -a admin -n 0 PING
  • 也可以使用-u一次性指定URL
    redis-cli -u redis://密码@主机:端口/0 命令redis-cli -u redis://admin@localhost:6379/0 PING

1.1.3 SSL/TLS支持

  • 可以使用--cacert--cacertdir配置受信任的根证书捆绑包或目录
  • 如果目标服务器要求使用客户端证书进行身份验证,则可以使用--cert指定证书--key指定私钥。

1.1.4 从其他程序获取输入

  • 从文件获取值
redis-cli -x set foo < /etc/services
  • 从文件中读取命令执行
cat /tmp/commands.txt | redis-cli

1.1.5 连续运行相同的命令

  • 运行命令5次
    redis-cli -r 5 incr foo
  • 运行命令5次,每次间隔1秒
    redis-cli -r 5 -i 1 incr foo
  • 运行命令无限次,每次间隔1秒
    redis-cli -r -1 -i 1 incr foo

1.1.6 CSV输出

  • 输出的值进行CSV格式化
redis-cli `--csv` lrange mylist 0 -1
  • 输出逗号分隔的形式"d","c","b","a"

1.2 交互模式

1.2.1 登录后连接其他实例

  • connect host port

1.2.2 断开重连

debug restart

1.3 特殊的操作模式

1.3.1 监控状态

  • redis-cli --stat -i 5 间隔5秒刷新一下状态
  • 解释
    - keys : 键的总数
    - mem:占用内存
    - clients:客户端
    - blocked:阻塞的客户端
    - request:请求数
    - connections:连接数

1.3.2 扫描大键

  • redis-cli --bigkeys
  • 扫描出每个类型最大的键,分析不同类型占用空间

1.3.3 监控命令

  • redis-cli monitor
  • 输出每个客户端的命令
    1593508841.246123 [0 127.0.0.1:54652] "set" "c" "3"

1.3.4 监控延迟

  • 总体延迟
    redis-cli --latency,redis-cli --latency-history
  • 机器内部延迟
    redis-cli --latency-dist

1.3.5 RDB远程备份

1.3.6 LRU模拟测试

2. 配置

3. 主从复制

4. 持久化

4.1 两种持久化方案

  1. RDB快照:每隔一段时间执行一次快照
  2. AOF文件:记录每个写入操作到AOF文件,server启动时,根据AOF文件重建数据库

4.2 RDB快照

  1. 优点:
  • RDB快照是一个紧凑的文件,通常比AOF文件更小
  • 重启时,使用RDB启动更快
  • 性能更好,父进程只需要fork一个子进程,磁盘IO交给子进程去做
  1. 缺点
  • 在灾难发生时(断电、kill -9等),会丢失最新的没有进行快照的数据
  • RDB需要经常使用fork,如果数据集较大或CPU性能不佳,那么fork操作会比较耗时

4.3 AOF文件

  1. 优点:
  • AOF提供更加细粒度的持久方式:everysec每秒同步一次,always每个写命令同步一次,no让操作系统决定
  • AOF是仅追加文件,如果断电不会损坏,如果出现以半写命令结束文件(如磁盘满等情况),也可以使用redis-check-aof工具修复
  • Redis太大时,Redis可以在后台自动重写AOF,将文件中的命令缩减为创建数据库所需的最小命令集合,减小文件大小,重写完后,就使用新的AOF文件
  • AOF易于理解,可编辑,可导出,例如如果使用FLUSHALL命令删除了所有key,此时如果没有重写AOF,那么可以编辑AOF文件,删除最后的FLUASHALL命令,然后重启,即可恢复数据。
  1. 缺点:
  • 同一数据集,AOF文件更大
  • 根据具体的同步策略,如always每个写命令同步一次,则性能可能会降低

4.4 使用

  • 使用SAVE/BGSAVE,同步/异步保存快照,一般用BGSAVE,这样不用阻塞主进程
  • 在配置文件中打开appendonly yes启用AOF,同步方式appendfsync有3种,always,everysec,no,一般使用everysec
  • AOF重写是由Redis自动触发的,使用BGREWRITEAOF可随时用于触发重写。

5. 管理

6. 安全性

7. 访问控制

8.