一、redis的使用场景

1、热点数据的缓存: 减少对数据库的访问频率和减轻数据库的压力。
2. 限时业务的运用: 秒杀  存储登录者用户信息  存储短信验证码
3. 计数器相关问题: 点赞数 收藏数 播放量
4. 排行榜相关问题: sort set
5. 分布式锁:

 二、redis的持久化

持久化:把内存中的数据库保存到磁盘上,防止数据的丢失。

redis支持的持久化方式两种:
  (1)RDB:快照  其实就是把数据以快照的形式保存在磁盘上,什么是快照呢,你可以理解成把当前时刻的数据拍成一张照片保存下来。
 (2)AOF :日志追加 记录服务器接受的每个写入操作,当服务器启动时再次加载该日志,会把日志中的命令重新执行一遍

2.1 RDB快照持久化方式

2.1.1  RDB的触发方式

1.手动触发
   【1】save堵塞型保存
    [2]bgsave非堵塞型保存
2.自动触发

默认保存的文件名: dump.rdb 可以在redis.conf名称

redis 持久化 面试 redis持久化场景_数据库

 save

该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止。具体流程如下 :

redis 持久化 面试 redis持久化场景_java_02

 执行完成时候如果存在老的RDB文件,就把新的替代掉旧的。我们的客户端可能都是几万或者是几十万,这种方式显然不可取。

bgsave

执行该命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。具体流程如下:

redis 持久化 面试 redis持久化场景_redis 持久化 面试_03

 自动触发RDB

我们需要修改redis的配置文件来实现自动触发RDB。

redis 持久化 面试 redis持久化场景_java_04

 我们可以给这些数据改的小一些 比如改成   save 5   3    (5秒内变化3次)

2.1.2 AOF日志追加持久化方式

redis 持久化 面试 redis持久化场景_数据库_05

我们可以查看它的文件:appendonly.aof.1.incr.aof

redis 持久化 面试 redis持久化场景_redis_06

 aof模式会把每个写操作,记录到一个日志文件,当redis启动时会把该日志中每个指令重新执行一遍。 数据恢复速度慢。数据完整性高。

如果两则都使用,恢复数据时按照aof恢复。因为redis认为它的完整性比较好。大多数使用rdb.