认识Redis
这更多的是一种记录学习的过程,如果有问题可以私信我进行修改
定义
Redis,是一个基于内存的键值型NoSQL数据库
特征
1.键值型数据库,Value 支持多种数据结构
value可以是复杂的数据结构,如String、List、Set、 Hash等。
2.单线程模型,每个命令具有原子性
Redis 的 核心逻辑是单线程执行,因此:
- 同一时刻只有一个命令在执行,不需要加锁
- 不会出现读写碰撞,天然具备原子性
- (从 Redis 6 开始加入多线程 IO,但核心执行仍是单线程)
单线程反而减少了上下文切换开销,性能更稳定
3.高性能:低延迟,速度快
Redis能达到微秒级响应。第一点就是上面的单线程避免锁竞争;第二点是基于内存,访问速度远高于磁盘数据库;第三点是IO多路复用,提升处理大量连接的能力;第四点是高性能的数据结构,底层编码很精巧。
4.支持数据持久化
Redis 不是纯内存临时数据,它支持将数据写入磁盘:
- RDB:定期快照,文件小、恢复快。就是把某个节点的数据一次性写进一个.rdb文件
- AOF:追加日志,保证较强持久性。就是以日志的形式逐条写入AOF文件
- RDB + AOF 混合持久化:两者结合的主流方式
5.支持主从复制、哨兵、分片集群
说白了就是分布式能力很强
主从复制:数据同步,读写分离。说白了就是主库负责写,从库负责拷贝主库的修改,数据的读取是从从库读取的。这样的好处就是如果可以进行多次读请求;当主库挂掉的时候从库还能当备份
哨兵 Sentinel:自动故障转移,提高高可用性。说白了就是监控、通知、故障转移。监控master和slave是否还在,如果挂了就进行通知。选择一个从库变成主库
Cluster 分片集群:水平扩展,支持百万级 QPS。其实就是分布式,所有节点共同存储,自动分片
6.支持多语言客户端
Redis 提供统一协议(RESP),客户端由社区/官方提供,支持绝大多数语言
