梦想还是要有的,万一忘了咋办?

0%

Redis

是什么

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
2
3
4
5
6
7
8
appendonly no:是否开启AOF
appendfilename "appendonly.aof":AOF文件名
dir ./:RDB文件和AOF文件所在目录
appendfsync everysec:fsync持久化策略
no-appendfsync-on-rewrite no:AOF重写期间是否禁止fsync;如果开启该选项,可以减轻文件重写时CPU和硬盘的负载(尤其是硬盘),但是可能会丢失AOF重写期间的数据;需要在负载和安全性之间进行平衡
auto-aof-rewrite-percentage 100:文件重写触发条件之一
auto-aof-rewrite-min-size 64mb:文件重写触发提交之一
aof-load-truncated yes:如果AOF文件结尾损坏,Redis启动时是否仍载入AOF文件

优点:

  • 支持秒级持久化、兼容性好

缺点:

  • 文件大、恢复速度慢、对性能影响大

Reids三种不同删除策略