Redis的十个问题
1.Redis支持的数据类型?
2.什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么?
3.Redis 有哪些架构模式?讲讲各自的特点
4.使用过Redis分布式锁么,它是怎么实现的?
5.使用过Redis做异步队列么,你是怎么用的?有什么缺点?
6.什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?
7.Redis常用命令
8.为什么Redis 单线程却能支撑高并发?
9.说说Redis的内存淘汰策略
10.Redis的并发竞争问题如何解决?
1.Redis支持的数据类型?
2.什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么?
Redis持久化:用小而紧凑的格式将存储在内存中的数据写入硬盘。
持久化方式:
- 快照持久化
- AOF持久化
快照持久化
通过创建来获得存储在内存里面的数据在某个时间点上的副本。
创建快照的方式:
- BGSAVE命令(异步创建)
- SAVE命令(不再接收其他命令)
- SHUTDOWN命令会触发SAVE操作
- 配置save选项,redis会自动触发BGSAVE操作
- redis主服务器收到其他服务器发送的SYNC命令,可能会触发主服务器的BGSAVE操作
快照的使用方式:
- 用户可以对快照进行备份
- 将快照复制到其他服务器
- 将快照留在原地以便重启服务器时使用
缺点:Redis、系统、硬件这三者之中的任意一个奔溃了,则redis会丢失最近一次创建快照后写入的所有数据。
AOF持久化
将所有修改了数据库的命令都写入一个只追加(append-only)文件里面
将被执行的写命令写到AOF文件的末尾,以此来记录数据发生的变化。Redis只需从头到尾重新执行一次AOF文件中的所有命令,就可以恢复AOF文件所记录的数据集。
优点:可以将丢失数据的时间窗口降至1s(甚至不丢失任何数据),也可以在极短的时间内完成定期的持久化操作。
缺点:
- 这种策略需要对硬盘进行大量写入,所以redis处理命令的速度会收到硬盘性能的限制。
- AOF文件体积不断增大,还原操作时间不断赠长。(为解决此问题,可以向redis发生BGREWRITEAOF命令,该命令会通过移除AOF文件中冗余命令来重写AOF文件,使AOF文件的体积变得尽可能的小。)