1、Redis诞生的原因

08年的时候一位开发者觉得MySQL性能较差,便想到了利用内存比硬盘速度快很多的特性,开发了半结构化的内存数据库Redis,并开源。全程是Remote Dictionary Server(远程字典服务器)

2、Redis的应用场景

技术上常用于缓存、任务队列以及存储。
业务上常见用法是登录Session管理、分布式锁

3、支持的数据类型

字符串String、哈希Hash、列表List、集合Set、排序集合Sorted Set

4、Redis实现任务队列、优先队列、发布订阅

任务队列:List push BRPop
优先队列:BRPop 多个key,前面的key先pop
发布订阅:channel publish/subscribe

5、持久化

RDB:快照。一定条件(key值修改和时间)下触发快照,主进程fork出一个当前进程的副本和子进程,主进程将快照内容存到硬盘上。持久化期间的数据子进程存到临时文件上,持久化结束后放到原数据上。如果期间奔溃,临时文件的数据会丢失。性能较高
AOF:将所有写入命令记录到AOF文件内。多次设置同一个key会写入多次,一定条件下会进行重写

6、主从和复制

主Master、子Slave。子进程只同步数据,不能写入。
一个主数据库可以有对个子数据库,子数据只能有一个主数据库
主从可以提高稳定性,读写分离和子数据库进行持久化可以提高性能。

常见面试题