面试题--------Redis是单线程的,为什么还能这么快?&& Redis的过期策略

Redis是单线程的,为什么还能这么快?

对服务端程序来说,线程切换和锁通常是性能杀手,而单线程避免了线程切换和竞争所产生的消耗;

Redis的大部分操作是在内存上完成的,这是它实现高性能的一个重要原因;

Redis采用了IO多路复用机制,使其在网络IO操作中能并发处理大量的客户端请求,实现高吞吐率。

Redis的过期策略

Redis支持如下两种过期策略:

惰性删除:客户端访问一个key的时候,Redis会先检查它的过期时间,如果发现过期就立刻删除这个key。

定期删除:Redis会将设置了过期时间的key放到一个独立的字典中,并对该字典进行每秒10次的过期扫描,

过期扫描不会遍历字典中所有的key,而是采用了一种简单的贪心策略。该策略的删除逻辑如下:

从过期字典中随机选择20个key;

删除这20个key中已过期的key;

如果已过期key的比例超过25%,则重复步骤1。

你可能感兴趣的:(redis,java,缓存)