定义
redis, remote dictionary server
- 开源的,C原语言编写,非关系数据库
- 以key-value键值对进行数据存储,内存型数据库,可以做持久化
- 支持多种数据类型 字符串(str,number) 列表类型 哈希 集合 有序集合
- 单进程单线程,可做并发计数,无法利用多核的CPU资源
- 为解决磁盘IO性能瓶颈而提出,提供等接口
特点
- 数据存在内存中,读取速度快,可以存入磁盘做数据持久化,便于数据的备份,恢复
- 内存中的key,可以设置过期时间,一段时间后自动删除,释放内存
- 支持简单的事务
- 主从复制,主节点挂掉,从节点补上
- 哨兵机制,自动故障转移
应用场景
- 作为缓存,请求的数据优先走缓存,缓存没有,再走数据库,有效减少数据库查询压力
- 并发计数,利用redis单进程单线程特性
- 实时排行榜
- 生产者,消费者模型的中间层
数据类型
- 字符串
- 列表类型
- 哈希类型
- 集合
- 有序集合
事务
redis支持简单的事务
数据持久化
数据持久化的方式:
- RDB
- AOF
主从复制
Master-Slave结构
主节点,可读、写
从节点,只可读,分担主节点读的压力
主节点故障,从节点自动升为主,继续提供服务
哨兵
实现故障的自动转移。 默认的Redis主从复制,主节点挂掉后,是不能再继续提供服务的,因为此时没有主节点。可以通过人工的方式重新选择一个节点作为Master节点,然后即可以继续提供服务。不过这种人工的方式有点繁琐,比较简单的方式就是通过哨兵监控方式,实现自动的故障转移。