redis 单线程(不能利用多核)IO多路复用
redis6 多线程网络IO 实际处理还是单线程的
event loop 队列
持久化
RDB(快照) 阻塞父进程
bgsave->主进程->fork子进程->生成RDB文件(物理二进制,快)
AOF(日志) 不会阻塞父进程
bgrewriteaof->父进程->fork(aof_buf(旧文件))/aof_rewrite_buf(新文件 替换旧文件)
生成命令(一直重写,文件会大,恢复慢)
缓存过期策略
1.定期策略(随即删除) 默认10s
2.惰性删除 过期的key有请求,才删除
3.定时删除 时间设置不合理,容易出问题
缓存淘汰(内存到达触发)
- noeviction:内存超过配置,返回错误,不会删除
- volatile-ttl:从配置了过期时间的键中驱逐马上要过期的
- allkeys-lru:采用LRU算法,从所有键中驱逐最久未使用的
- volatie-lru:从设置了过期时间的键中驱逐最久未使用的
- allkeys-lfu:从所有键中驱逐使用频率最少的
- volatile-lfu:从所有配置了过期时间的键中驱逐使用最少的
