本篇接Redis高级特性上
一、Redis为什么这么快
1、单线程
单线程可避免线程创建销毁,线程上下文切换,线程竞争问题
2、 纯内存
采用虚拟内存
1、 通过把同一块物理内存映射到不同的虚拟地址空间实现内存共享
2、 对物理内存进行隔离, 不同的进程操作互不影响
3、 虚拟内存可以提供更大的地址空间, 并且地址空间是连续的, 使得程序编写、
链接更加简单。
3、 同步非阻塞I/O——多路复用
采用多路复用
二、内存回收
1.过期策略
立即过期
惰性过期
定期过期
2.淘汰策略
LRU, Least Recently Used: 最近最少使用
LFU, Least Frequently Used
volatile针对设置了ttl的key, allkeys是针对所有key
三、持久化机制
RDB : Redis DataBase, 记录快照
AOF : Append Only File, 记录日志
1.RDB
- 优势
紧凑, 适合备份和灾难恢复
生成文件过程不影响主进程
大数据集恢复速度较快 - 不足
不能实时持久化, 可能丢失数据
2.AOF特点
-优势
同步频率灵活, 最多丢失一秒数据
- 不足
体积更大; 消耗更多性能