Redis
1、redis
是一个高性能的 key-value 数据库
2、数据类型
Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作
3、原子性
Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
4、持久化
RDB:在指定时间间隔将redis内存中的数据集快照(时间点)写入磁盘
RDB 是一个非常紧凑(compact)的文件,它保存了 Redis 在某个时间点上的数据集。 这种文件非常适合用于进行备份
如果你需要尽量避免在服务器故障时丢失数据,那么 RDB 不适合你
- save方式触发,会导致阻塞;bgsave触发,可一边持久化,一边响应客户端的请求。子进程来处理保存工作,父进程继续响应请求而无需去关心I/O操作。
AOF:以日志的形式记录写操作(增量保存),将redis所有执行过的指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis重启时会读取该文件进行重新构建数据
换言之,redis重启会找到日志文件,从头到尾执行一遍指令恢复数据
AOF 的默认策略为每秒钟 fsync 一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据( fsync 会在后台线程执行,所以主线程可以继续努力地处理命令请求)。AOF 文件是一个只进行追加操作的日志文件(append only log)
5、
缓存穿透:
缓存击穿:
缓存雪崩: