Redis学习与应用 | 青训营

43 阅读2分钟

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 的内容