Redis为什么快?(面试常问)

Redis是一个开源的高性能内存数据库,特点是数据存储在内存中,操作时性能更高;还支持多种数据结构,String、Hash、list、set、zset等,key还支持自动过期。Redis的好处是因为数据存在内存中所以性能更高,还有因为是单线程操作,所以天然具有线程安全的特性,单线程又能避免多线程的频繁上下文切换问题。 Redis的坏处也是因为数据存储在内存中,内存在重启后就会消失,所以会有数据丢失的问题。 Redis本身提供了两种备份策略,一种是RDB,每5min进行一次全量的快照备份,另一种是AOF,每1s进行一次增量备份,在实际使用时是结合使用,就是使用RDB每5分钟进行一次快照备份,然后在两次快照之间使用AOF进行备份。这样做的好处是可以避免AOF文件过大。虽然Redis提供了备份策略保障不丢失,但是在实际业务中我们也还会在Mysql中保存一份数据做持久化的存储,因为Mysql的好处就是数据存储在磁盘上服务重启也不会丢失。

总结来讲就是:

1.Redis(内存操作)完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。

2.(单线程,省去线程切换、锁竞争的开销)采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;

3.(NIO 的 IO 多路复用模型)使用多路 I/O 复用模型,非阻塞 IO;这里“多路”指 的是多个网络连接,“复用”指的是复用同一个线程。