1. Redis 是什么?
2. Redis 支持哪些数据类型?
3. Redis 有哪些应用场景?
4. 说说 Redis 的线程模型
5. Redis 到底是多线程的还是单线程的?
6. 对于 Redis 管道技术有了解吗?
7. 什么是 Redis 的事务?
8. 你是如何保证 Redis 数据的可靠性的? 对 Redis 进行持久化。持久化的方式有两种,RDB 和 AOF。
SAVE
或者 BGSAVE
命令,SAVE
会阻塞服务器进程,而 BGSAVE
会在后台完成执行。自动触发策略可以在 Redis 的配置文件中进行配置,比如 save 1000 1
,就是在 1000 秒内,至少有 1 条数据发生了变化,那就会触发 BGSAVE
,就数据写到磁盘中,这种策略可以配置多条。RDB 的缺点很明显,就是可能会导致一段时间内的数据丢失,优点就是恢复数据比较快。BGREWRITEAOF
命令即可重写 AOF 文件,自动触发可以在配置文件中配置策略,比如 auto-aof-rewrite-percentage 100
表示文件增量大于 100% 时进行重写,auto-aof-rewrite-min-size 64mb
表示 AOF 文件体积大于 64m 时就进行重写。可以在配置文件中配置 AOF 的写入命令的策略,appendfsync Everysec
表示每秒记录一次,默认就是该策略,还可以配置 appendfsync Always
,记录每次写操作, appendfsync No
,由操作系统决定何时记录写操作。AOF 的优点是可以不造成数据的丢失,缺点是 IO 操作比较多。一般会同时开启 RDB 和 AOF,同时开启的情况下,会优先根据 AOF 文件来恢复数据。
9. 如何保证 Redis 中的数据都是热点数据? 当 Redis 中的数据集上升到一定程度后,会根据内存淘汰策略淘汰数据。内存淘汰策略有如下几种:
10. 对于过期的 key,Redis 是如何处理的? Redis 有三种过期键删除策略:
Redis 同时使用了惰性过期和定期过期两种策略。