Redis入门,看这一篇就够了( 六 )


选项同步频率always每个写命令都同步eyerysec每秒同步一次no让操作系统来决定何时同步

  • always 选项会严重减低服务器的性能
  • everysec 选项比较合适 , 可以保证系统崩溃时只会丢失一秒左右的数据 , 并且 Redis 每秒执行一次同步对服务器几乎没有任何影响 。
  • no 选项并不能给服务器性能带来多大的提升 , 而且会增加系统崩溃时数据丢失的数量 。
随着服务器写请求的增多 , AOF 文件会越来越大 。 Redis 提供了一种将 AOF 重写的特性 , 能够去除 AOF 文件中的冗余写命令 。
复制通过使用 slaveof host port 命令来让一个服务器成为另一个服务器的从服务器 。
一个从服务器只能有一个主服务器 , 并且不支持主主复制 。
连接过程
  1. 主服务器创建快照文件 , 即 RDB 文件 , 发送给从服务器 , 并在发送期间使用缓冲区记录执行的写命令 。 快照文件发送完毕之后 , 开始像从服务器发送存储在缓冲区的写命令 。
  2. 从服务器丢弃所有旧数据 , 载入主服务器发来的快照文件 , 之后从服务器开始接受主服务器发来的写命令 。
  3. 主服务器每执行一次写命令 , 就向从服务器发送相同的写命令 。
主从链
随着负载不断上升 , 主服务器无法很快的更新所有从服务器 , 或者重新连接和重新同步从服务器将导致系统超载 。 为了解决这个问题 , 可以创建一个中间层来分担主服务器的复制工作 。 中间层的服务器是最上层服务器的从服务器 , 又是最下层服务器的主服务器 。
哨兵Sentinel(哨兵)可以监听集群中的服务器 , 并在主服务器进入下线状态时 , 自动从从服务器中选举处新的主服务器 。
分片分片是将数据划分为多个部分的方法 , 可以将数据存储到多台机器里面 , 这种方法在解决某些问题时可以获得线性级别的性能提升 。
假设有 4 个 Redis 实例 R0, R1, R2, R3, 还有很多表示用户的键 user:1, user:2, ... , 有不同的方式来选择一个指定的键存储在哪个实例中 。
  • 最简单的是范围分片 , 例如用户 id 从 0 ~ 1000 的存储到实例 R0 中 , 用户 id 从 1001 ~ 2000 的存储到实例 R1中 , 等等 。 但是这样需要维护一张映射范围表 , 维护操作代价高 。
  • 还有一种是哈希分片 。 使用 CRC32 哈希函数将键转换为一个数字 , 再对实例数量求模就能知道存储的实例 。
根据执行分片的位置 , 可以分为三种分片方式:
  • 客户端分片:客户端使用一致性哈希等算法决定应当分布到哪个节点 。
  • 代理分片:将客户端的请求发送到代理上 , 由代理转发到正确的节点上 。
  • 服务器分片:Redis Cluster 。
参考资料:

此外 , 附上一些整理的Redis电子书资料及视频资料 。
【2020】Redis企业级入门到精通应用实战apprhkaai3v6603.h5.xiaoeknow.com
Redis入门,看这一篇就够了文章插图
Redis入门,看这一篇就够了文章插图
(需要电子书资料的可留言)


推荐阅读