mengtianbao 2018-10-09
redis是单线程程序.
1.单线程的redis为何如此之快
redis的数据都在内存中,所有的运算都是内存级别的运算。
使用Redis指令时,对于时间复杂度为O(n)级别的指令,一定要谨慎使用,一不小心就可能会导致Redis卡顿。
2.单线程的redis如何处理并发客户端的连接
3.定时任务的处理
Redis 的定时任务会记录在一个称为最小堆的数据结构中。这个堆中,最快要执行的任务排在堆的最上方。
在每个循环周期,Redis 都会将最小堆里面已经到点的任务立即进行处理。处理完毕后,将最快要执行的任务还需要的时间记录下来,这个时间就是select系统调用的timeout参数。因为 Redis 知道未来timeout时间内,没有其它定时任务需要处理,所以可以安心睡眠timeout的时间。