regionserver的缓存包含了memestore和blockcache两种,其中memstore用于写缓存(读缓存也包括),blockcache用于读缓存。regionserver给每一个region都分配一个memstore,数据写入的过程中先写入到memstore,当memstore达到设定的阈值后(由hbase.hregion.memstore.flush.size参数控制),会触发flush操作将数据溢写到磁盘,或者达到heapsize *hbase.regionserver.global.memstore.upperLimit * 0.9时,会强行启动flush进程,从最大的memstore开始flush直到低于限制。
而每个regionserver只有一个blockcache,读取数据时,首先到memestore上读数据,找不到再到blockcahce上找数据,再查不到则到磁盘查找,并把读入的数据同时放入blockcache。