一、redis单线程
redis的内存读写操作是单线程的,保证操作的线程安全。redis6之后,redis的读写操作是多线程的,但核心的内存计算操作仍然是单线程的。面试官:Redis是单线程还是多线程?(你为何怎么说都不对?)_redis5和redis6的区别-CSDN博客
二、Redis的持久化
由于redis是一个内存数据库,所有的数据都是保存在内存中的,内存中的数据容易丢失。所以redis的持久化就显得尤为重要。在redis中,提供了两种数据持久化的方式,分别是RDB和AOF,默认开启RDB方式。
(1)RDB持久化
定期对数据进行全量备份。
优点:数据恢复速度快(保存的是完整数据)
缺点:可能会丢失部分数据
(2)AOF持久化
将所有的写请求以命令的形式都保存在一个appendonly.aof的文件中,恢复时按照appendonly.aof文件回放。
AOF提供了三种fsync配置:always/everysec/no, 通过配置项[appendfsync]指定。always对每个写命令都执行一次fsync操作,数据安全性最高,但速度最慢;
缺点:恢复效率较RDB低(保存的是历史的写操作命令,恢复需要重新执行一遍)
优点:数据安全性高。