Redis是什么?
Redis是现在最受欢迎的NoSQL数据库之一,Redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库。
Redis有以下特点:
- 基于内存运行,性能高效
- 支持分布式,理论上可以无限扩展
- key-value存储系统
- 开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API
相比于其他数据库类型,Redis具备的特点是:
- C/S通讯模型
- 单进程单线程模型
- 丰富的数据类型
- 操作具有原子性
- 持久化
- 高并发读写
- 支持lua脚本
哪些大厂在使用Redis?
github,twitter,微博,Stack Overflow,阿里巴巴,百度,美团,搜狐
为什么需要Redis?
- 数据从单表,演进出了分库分表
- MySQL从单机演进出了集群:数据量增长、读写数据压力不断增加
- 数据分冷热:热数据:经常被访问到的数据
- 将热数据存储到内存中
Redis基本工作原理
- 多样的数据模型
- 持久化
- 主从同步
- 数据从内存中读写
- 数据保存到硬盘上防止重启数据丢失:增量数据保存到AOF文件
- 单线程处理所有操作命令
什么是AOF文件?
Redis持久化
Redis 的持久化是通过 RDB 和 AOF 文件进行的。
RDB 只记录某个时间点的快照,可以通过设置指定时间内修改 keys 数的阀值,超过则自动构建 RDB 内容快照,不过线上运维,一般会选择在业务低峰期定期进行。RDB 存储的是构建时刻的数据快照,内存数据一旦落地,不会理会后续的变更。
而 AOF,记录是构建整个数据库内容的命令,它会随着新的写操作不断进行追加操作。由于不断追加,AOF 会记录数据大量的中间状态,AOF 文件会变得非常大,此时,可以通过 bgrewriteaof 指令,对 AOF 进行重写,只保留数据的最后内容,来大大缩减 AOF 的内容