是什么
Redis 是一个开源的,内存中的数据结构,它可以用作数据库、缓存、消息中间件。
官方测试结果可以达到10万+QPS。
支持数据类型
类型 | 简介 | 特性 | 场景 |
---|---|---|---|
String | 二进制安全 | 任何数据,jpg图片、序列化对象、最大512M | — |
Hash | 键值对集合 | 适合存储对象,可以update某一个属性 | 存储、读取、修改用户属性 |
List | 链表(双向) | 增删块、提供操作某一段元素的API | 1、最新消息排行等功能;2、消息队列 |
Set | 哈希表实现、元素不重复 | 增删改查复杂度O(1),可求交并集 | 1、共同好友;2、统计网站独立IP;3、好友推荐时,根据tag求交集、大于某个阀值就可以推荐 |
SortedSet | 将set中的元素增加一个权重参数score,元素按照score有序排列 | 数据插入集合时,已经进行天然排序 | 1、排行榜单;2、带权重的消息队列 |
为什么快
- redis是内存数据库,读写数据不受磁盘io限制。
- redis 数据结构简单
- 单线程,避免上下文切换、锁等耗时操作
- 多路I/O复用模型
单线程理解
处理用户网络请求使用了单线程,并非一个redis只有一个线程。例如redis 持久化时用了多线程。
redis持久化方式
持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。
Redis 提供了两种持久化方式:RDB(默认) 和AOF
RDB
rdb是Redis DataBase缩写。功能核心函数rdbSave(生成RDB文件)和rdbLoad(从文件加载内存)两个函数。
优点:
- RDB文件紧凑,体积小,网络传输快,适合全量复制;
- 恢复速度比AOF快很多。
- 与AOF相比,RDB最重要的优点之一是对性能的影响相对较小。
缺点:
- 无法实时持久化,因此AOF持久化成为主流。
- RDB文件需要满足特定格式,兼容性差(如老版本的Redis不兼容新版本的RDB文件)。
AOF
Redis服务器默认开启RDB,关闭AOF;要开启AOF,需要在配置文件中配置:
1 | appendonly yes |
AOF常用的配置项:
1 | appendonly no:是否开启AOF |
优点:
- 支持秒级持久化、兼容性好
缺点:
- 文件大、恢复速度慢、对性能影响大