GC算法简介

GC定义 GC是Garbage Collection的简称,也就是我们常说的垃圾回收。GC把程序已分配但是不再使用的内存空间视为垃圾。GC程序主要做两件事: 找到内存空间里的垃圾 回收这部分内存,以供程序员后续能再次使用 对于没有GC的语言,程序员就必须手动管理内存,如果忘记释放内存空间,就容易发生内存泄露,

Redis网络模型(3)—客户端事件

redis启动后,设置完必要的事件后,调用aeMain进入事件循环,之后便阻塞在aeApiPoll上,等待客户端的连接。 客户端交互 客户端与服务器的交互状态主要有四种:建立连接、发送请求、返回数据、关闭连接。 建立连接 如果有客户端进行连接,则会触发服务器监听socket的可读事件,并调用networki

Redis网络模型(2)—Server启动

有了高性能的事件驱动库之后,就可以开始构造Redis服务器程序了。一般,Server启动都会通过以下流程,然后阻塞在accept()上,等待客户端的连接: bind() ———> listen() ———> accept() Redis也不例外,但是因为Redis是单线程,如果阻塞在accept()上,就不能对客户端进行快速的回复,所以

Redis网络模型(1)—事件驱动库

Redis很快,而且,Redis能很好的应对高并发的场景。但是,如果对Redis有过了解,就会知道Redis程序是单线程的。使用单线程却能保证如此高性能,有以下几个原因: 大部分数据放在内存中,减少磁盘I/O 大多数操作都是I/O操作,cpu密集型操作异步化,防止单个操作占用大量cpu 使用I/O多路复用

一致性Hash

说起一致性Hash算法,很多人的第一反应就是Memcached的路由算法。当Memcached服务分布式部署后,在一台机器上的数据缓存,在其他机器上是不存在的,我们请求缓存数据时,必须先找到拥有该数据的服务器。所以,我们需要一种路由算法来负责根据缓存数据的Key计算得到对应的Memcached服务器