概要介绍
Redis是一种基于Key-Value的数据库。
特性
- 速度快,根据官方数据可以达到10w OPS。
- 支持持久化。Redis将所有数据保持在内存中,对数据的更新将异步保存在磁盘上。
- 支持多种数据结构。
- 支持多种客户端语言,如Java、Python、Go等。
- 可以提供发布订阅、LUA脚本、事务、Pipeline等丰富的功能。
- 不依赖于外部库,且是单线程模型,十分简单。
- 支持主从复制。
- 提供了实现高可用和分布式的方式,如Redis-Sentinel、Redis-Cluster。
速度快的原因
- 数据都存储在内存中,绝大多数请求都是纯粹的内存操作。
- Redis使用C语言进行编写。
- 单线程模型,避免了上下文切换和竞争条件,不存在加锁、释放锁的操作,没有死锁的可能。注意:此处的单线程是指请求处理模块是单线程,并不代表Redis内部没有多线程存在。
- 多路I/O复用,同时监察多个流的I/O事件,空闲时将当前线程阻塞,有一个或多个流有I/O事件时,从阻塞态唤醒,轮询所有流,依次处理就绪的流。
应用场景
- 缓存系统
- 计数器
- 消息队列系统
- 排行榜
- 社交网络
- 实时系统
微信公众号:lemon树下的NLPer