2018/08/14 《Redis 入门指南》 学习笔记(三)

  第五章《实践》

  第七章《持久化》

总结

PS:

  在实践章节涉及到了很多语言 Node/Python等。因为这些语言目前还没有涉及。所以只挑选有关的 PHP 章节来做讲解。

1:PHP 常用的客户端有哪些?区别是什么?

  - 常用的 Redis 客户端,官方推荐有两种 Redis / Predis 两种。

  - Predis 是使用 PHP 来实现原生客户端。不需要安装扩展,Composer / Git 可以直接拉取使用。

  - Redis 是一个 C 的扩展。

  - 除非执行大量命令,否则两者差别并不大

2:Redis 管道命令简单使用

  - 在之前的章节中已经讲解管道命令的优点和适用场景,今天着重的来实现看下。

  - 试验为 Predis 。

  - 官方提供了两种方式,也很简单,看一下就明白

  // Executes a pipeline inside the given callable block:
  $responses = $redis->pipeline(function ($pipe) {
      for ($i = 0; $i < 1000; $i++) {
          $pipe->set("key:$i", str_pad($i, 4, '0', 0));
          $pipe->get("key:$i");
      }
  });

  // Returns a pipeline that can be chained thanks to its fluent interface:
  $responses = $redis->pipeline()->set('NAME', 'bar')->get('NAME')->execute();

3:RDB 的本质是通过什么方式进行持久化的?

  - 本质是通过 快照 方式来进行持久化。

4:RDB 生成快照的方式有哪些?

  - 配置自动生成快照

    -   redis.conf 配置文件

    - 解读:15分钟内(900秒)有一个键被修改,则生成快照。其余同理

  - 执行 SAVE / BGSAVE 生成快照

    - 在执行 SAVE 时, Redis会同步执行快照,同时堵塞其他客户端命令,所以要避免在生产环境中直接使用。

    - 手动快照推荐 BGSAVE ,后台执行,对其他客户端无影响。

    - 执行 LASTSAVE 可以查看最近一次快照的时间戳。

5:RDB 生成快照的原理是什么?

  - Redis 在执行快照时使用 fock 函数复制一份当前进程(父进程)的副本(子进程);

  - 父进程继续接受客户端请求,子进程写入。

  - 子进程写入完成之后,用临时文件替换旧的 RDB 文件,一次快照完成。

6:RDB 其他

  - 默认的话 RDB 是经过压缩的,可以 配置 rdbcompression 来关闭压缩,减少CPU消耗

  - 可以通过 dir 和 rdbfilename 来确定rdb的存储路径和名称

  

4:AOF 是默认开启的么?如何开启?

  - AOF 默认是不开启持久化的。配置 appendonly 开启。

5:AOF 随着时间文件越来越大,是如何处理的?

  - Redis 可以使用 rewrite 重写日志

  - auto-aof-rewrite-percentage 100 // 大于上次重写的百分比

  - auto-aof-rewrite-min-size 64mb // 允许重写的最小

5:AOF 是当时就写入磁盘了么?

  - 没有,由于操作系统的缓存机制,AOF 进入了系统缓存,会进入 30S 一次的同步操作。

  - 配置 appendfsync 

    - always 每次同步,最安全,最慢。

    - everysec 每秒一次,默认

    - no 不同步,使用系统同步,不推荐~

6:当 AOF 和 RDB 同时存在时,优先恢复哪个?

  - AOF  

猜你喜欢

转载自www.cnblogs.com/25-lH/p/9480579.html