Redis相关整理
一、Redis核心原理
1.1、Redis 单线程为什么还能这么快?
因为它所有的数据都在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗问题。正因为 Redis 是单线程,所以要小心使用 Redis 指令,对于那些耗时的指令(比如 keys),一定要谨慎使用,一不小心就可能会导致 Redis 卡顿。
1.2、Redis 单线程如何处理那么多的并发客户端连接?
Redis的IO多路复用:redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,依次放到 文件事件分派器,事件分派器将事件分发给事件处理器。 Nginx也是采用IO多路复用原理解决C10K问题【c10k问题指的是服务器如何支持10k并发连接】。
1.3、缓存过期清理
Redis对于过期键有三种清除策略:
1)、被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key。
2)、主动删除:由于惰性删除策略无法保证冷数据被及时删掉,所以Redis会定期主动淘汰一批已过期的key。
3)、当前已用内存超过maxmemory限定时,触发主动清理策略。
当REDIS运行在主从模式时,只有主结点才会执行被动和主动这两种过期删除策略,然后把删除 操作”del key”同步到从结点。
第三种策略的情况如下: 当前已用内存超过maxmemory限定时