2021-06-28

Redis知识汇总

数据类型

  1. Strings 字符型
  2. Hashes 字典
  3. Lists 集合
  4. Sets 不重复集合
  5. ZSet 有序集合
  6. bitmap

redis优点

  1. 速度快,数据在内存中,结构类似hashmap,查询时间复杂度是O(1)
  2. 支持丰富数据类型
  3. 支持事务,操作都是原子性
  4. 丰富特性:用于缓存,消息,按key设置过期时间,过期删除

Memcache对比

  1. 可以持久化
  2. 数据类型多样
  3. 底层模型不同,有自己的vm机制,寄生系统调用系统函数时间

单线程

使用队列技术将访问串行化

持久化

  1. RDB机制(在某一时间点上的切面)
    优点
    (1)只有一个文件 dump.rdb,方便持久化。
    (2)容灾性好,一个文件可以保存到安全的磁盘。
    (3)性能最大化,fork 子进程来完成写操作,让主进程继续处理命令,所以是 IO最大化。使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了 redis的高性能)
    (4)相对于数据集大时,比 AOF 的启动效率更高。
    缺点
    只能保证最终一致性,存在数据丢失风险
  2. AOF机制
    优点:
    (1)数据安全,aof 持久化可以配置 appendfsync 属性,有 always,每进行一次命令操作就记录到 aof 文件中一次。
    (2)通过 append 模式写文件,即使中途服务器宕机,可以通过 redis-check-aof工具解决数据一致性问题。
    (3)AOF 机制的 rewrite 模式。AOF 文件没被 rewrite 之前(文件过大时会对命令进行合并重写),可以删除其中的某些命令(比如误操作的 flushall))
    缺点:
    (1)AOF 文件比 RDB 文件大,且恢复速度慢。
    (2)数据集大的时候,比 rdb 启动效率低。

常见问题以及解决方案

  1. Master不进行内存快照,会阻塞主线程工作,当数据量大时候会影响redis读写性能。
  2. 数据重要的话,使其中一个从节点进行AOF备份,策略为1s一次,减少数据的丢失。
  3. 主从数据提升复制速度,使用一个局域网
  4. 注意加从节点时该台服务器的负载
  5. 主从复制采用链表结构解决单点故障,实现主从替换。

常见问题以及解决方案

  1. 定时删除,设置过期时间的同时指定一个定时器,定时取执行删除操作
  2. 惰性删除:直到数据再次被查询时再判断是否应该删除
  3. 定期删除:单独一个线程去检查, 删除过期键

`

淘汰策略

  • volatile lru 从设置过期时间的数据中淘汰最近没有用过的

  • volatile random 从设置过期时间的数据中随机淘汰

  • volatile-ttl 从设置过期时间的数据中淘汰快到期的

  • allkeys-lru 从所有数据集中淘汰最近没有用到的

  • allkeys-random 从所有数据集中随机淘汰

  • no-enviction 废除淘汰策略

  • 策略规则

  • 1.如果数据呈现幂律分布,也就是一部分数据常用一部分不常用,使用lru

  • 2.如果出现平等分布,所有数据访问频率相同,使random

同步机制

  • 主节点做bgsave
  • 同时将后续修改记录到内存buffer中
  • 开始同步rdb文件
  • 从节点加载rdb到内存
  • 执行主节点期键的修改操作记录
上一篇:REDIS持久化之RDB和AOF的区别


下一篇:redis相关概念