JAVA面试准备之Redis 缓存简介

Mysql的数据都是存放在磁盘中的,虽然在数据库层也做了对应的缓存,但这种数据库层次的缓存,一般针对的是查询的内容,而且力度也比较小,一般只有表中数据没有发生变更的时候,数据库中对应的缓存才会发挥作用。但这并不能减少业务系统对数据库产生的增删改查的IO压力。因此缓存技术应运而生,该技术实现了对数据库数据的高速缓存,提高业务响应速度,极大缓解后端数据库的压力。

JAVA面试准备之Redis 缓存简介_第1张图片

 

一般在客户端和存储层之间加上一层缓存层。

客户端先向缓存层请求数据,如果缓存层有对应的数据,则直接返回数据给客户端;

缓存层如果没有请求的数据,到存储层去查询数据(穿透查询)。

在存储层找到了数据,会将数据回写回缓存层(回种),以便下次客户端可以直接从缓存层获取数据,并且将结果返回给客户端。

当发现存储层无法提供服务时,可以让客户端的请求直接打在缓存层上,不管有没有获取到数据,都直接返回(熔断)。

 

缓存中间件-Memcache和Redis的区别

Memcache:

优点:简单易用,代码层次类似Hash,可以通过Hash这个数据结构来实现

支持简单数据类型

缺点:不支持数据持久化存储。一旦服务器宕机,数据没有办法保存下来

      不支持主从同步

      不支持分片

Redis:

数据类型丰富

支持数据磁盘持久化存储

支持主从同步

支持分片

有持久化需求或者对数据结构和处理有高级要求的应用,选用Redis.

其他简单的key-value的存储选择Memcache。

你可能感兴趣的:(Redis,redis)