## 特性
* 简单
* 速度快
* 持久化
* 多种数据结构
* 支持多种编程语言
* 功能丰富
* 高可用,高分布式支持
* 主从复制
### 简单
* C语言编写的.
* 核心代码很少,只有5W行代码 , 可以实现定制化 .
* 不依赖外部库(like libvent)
* 单线程模型
### 速度快
为什么使用单线程呢 ? 因为内存的速度非常快.
![](https://box.kancloud.cn/0cc6a4ba40b3b8c172bf3bd79eface2f_717x322.png)
从上到下,速度是越来越慢的 . redis使用的是内存部分 .内存相对于寄存器相对便宜, 相对硬盘速度要快很多 .
![](https://box.kancloud.cn/fd7a91d56a44e1145f2332d8f12bc901_604x380.png)
从下图可以看出,存储的介质是很重要的,而内存的速度是非常快的. Redis真正快的原因就是因为使用内存 . 但是很多场景中,单线程会是并发的瓶颈.
![](https://box.kancloud.cn/f91fa67d6d718f336442e0a78bc19dc8_647x267.png)
### 持久化(断电不丢数据)
Redis所有数据保持在内存中, 对数据的更新将异步的保存到磁盘上 .
![](https://box.kancloud.cn/55e777bacf6d88a5db5b65fc0885e008_744x236.png)
### 多种数据结构
除了以下五种数据结构外,在新版本的Redis中还提供了
* BitMaps : 位图 .
* HyperLoglog : 超小内存唯一值计数(有时候不准确,会有误差).
* GEO : 地理信息定位 .
![](https://box.kancloud.cn/af56a254fcec24807ffd84b83b48dddb_712x294.png)
### 功能丰富
* 发布订阅
* 事物
* Lua脚本
* pipeline
### 主从复制
哨兵
![](https://box.kancloud.cn/f9520eb54a16422fe68aab69820c7b88_540x349.png)
### 高可用,分布式
集群
![](https://box.kancloud.cn/d473c9d766255cd3aad2e0ff2dfee359_744x223.png)
- Redis简介
- 简介
- 典型应用场景
- Redis安装
- 安装
- redis可执行文件说明
- 三种启动方法
- Redis常用配置
- API的使用和理解
- 通用命令
- 数据结构和内部编码
- 单线程
- 数据类型
- 字符串
- 哈希
- 列表
- 集合
- 有序集合
- Redis常用功能
- 慢查询
- Pipline
- 发布订阅
- Bitmap
- Hyperloglog
- GEO
- 持久化机制
- 概述
- snapshotting快照方式持久化
- append only file追加方式持久化AOF
- RDB和AOF的抉择
- 开发运维常见问题
- fork操作
- 子进程外开销
- AOF追加阻塞
- 单机多实例部署
- Redis复制原理和优化
- 什么是主从复制
- 主从复制配置
- 全量复制和部分复制
- 故障处理
- 开发运维常见问题
- Sentinel
- 主从复制高可用
- 架构说明
- 安装配置
- 客户端连接
- 实现原理
- 常见开发运维问题
- 高可用读写分离
- 故障转移client怎么知道新的master地址
- 总结
- Sluster
- 呼唤集群
- 数据分布
- 搭建集群
- 集群通信
- 集群扩容
- 集群缩容
- 客户端路由
- 故障转移
- 故障发现
- 故障恢复
- 开发运维常见问题
- 缓存设计与优化
- 缓存收益和成本
- 缓存更新策略
- 缓存粒度控制
- 缓存穿透优化
- 缓存雪崩优化
- 无底洞问题优化
- 热点key重建优化
- 总结
- 布隆过滤器
- 引出布隆过滤器
- 布隆过滤器基本原理
- 布隆过滤器误差率
- 本地布隆过滤器
- Redis布隆过滤器
- 分布式布隆过滤器
- 开发规范
- 内存管理
- 开发运维常见坑
- 实战
- 对文章进行投票
- 数据库的概念
- 启动多实例