这是我参与「第五届青训营 」笔记创作活动的的第16天
本节导航
-
Redis基本工作原理
-
Redis应用案例
-
Redis注意事项
-
Redis实现数据持久化的原理
-
RDB:是一种快照存储持久化方式,原理就是将Redis某一时刻的内存数据写入到RDB文件中,并保存到磁盘上。
-
触发RDB文件生成的方式:
- *手动触发: *通过命令手动生成快照
- *自动触发: *通过配置参数的设置触发自动生成快照
-
AOF(append only file)持久化:与RDB存储某个时刻的快照不同,AOF是将客户端的每一个写操作命令都记录到日志中,追加到后缀为aof 的文件末尾,在Redis服务器重启时,会加载并运行aof文件的所有命令,以达到恢复数据的目的。
-
AOF文件生成的方式
- 手动触发:
bgrewriteaof ``命令(该命令会重新aof,下面有讲) - 自动触发:根据配置规则,当然自动触发的整体时间还跟Redis的定时任务频率有关系
- 手动触发:
-
-
Redis单线程处理命令的概念
-
redis非常快,而且是单线程的,这里说的单线程是指单线程处理命令,而实际上redis是多线程的,很多异步操作都是给后台线程进行操作的。 高效的原因:
- 内存级,读写速度快,不受磁盘IO限制
- 数据结构设计简单以及高效,很多结构操作都是O(1)
- 单线程 (1)没有竞争,不需要锁 (2)没有线程切换,不需要上下文切换 (3)串行执行,保证每个操作都是原子性的
- IO多路复用架构,非阻塞IO
-
Redis应用案例
- 掘金连续签到,需要了解GET/SET,Key过期
- 掘金用户计数,使用到HASH
- 排行榜ZSET
- 使用SETNX实现分布式锁
Redis注意事项
- 大Key:Value大于10KB就是大Key,使用大Key将导致Redis系统不稳定
- 热Key:一个Key的QPS特别高,将导致Redis实例出现负载突增,负责均衡流量不均的情况。导致单实例故障
- 慢查询:大Key、热Kye的读写;一次操作过多的Key(mset/hmset/sadd/zadd)
- 导致缓存穿透、缓存雪崩的场景及避免方案