Redis简介

MySQL中的数据都是存储在缓存中的,虽然在数据库中做了对应的缓存,一般针对的是查询的内容,而且粒度比较小,并且当数据库内容不发生变更的时候,缓存才有作用。不能减轻业务系统对数据库的增删改查IO压力。因此缓存数据库应运而生,实现对热点数据的缓存,提高了响应速度,缓解后端数据库的压力。
剑指Java面试--Redis

  • 穿透:穿透缓存层,访问数据库层
  • 熔断:不管有没有获得数据都返回,在有损的情况下,对外提供服务

缓存中间件

Memcache和Redis的区别

Memcache:代码层次类似Hash

  • 支持简单数据类型
  • 不支持数据持久化存储
  • 不支持主从
  • 不支持分片

Redis

  • 数据类型丰富
  • 支持数据磁盘持久化存储
  • 支持主从
  • 支持分片

为什么Redis能这么快

100000+QPS

  • 完全基于内存,绝大部分的请求是纯粹的内存操作,执行效率高
  • 数据结构简单(键值对),对数据的操作也简单
  • 采用了单线程,单线程也能处理高并发请求,想多核也可以启动多实例
  • 使用多路I/O复用模型,非阻塞IO

I/O多路复用模型

  • FD:文件描述符。一个打开的文件通过唯一的描述符进行应用,该描述符是打开文件的源数据到文件本身的映射。
  • Select系统调用:Selector负责监听这些文件是否可读或者可写
  • Redis采用的I/O多路复用函数:epoll/kqueue/evport/select?
    - 因地制宜:编译平台不同
    - 优先选择时间复杂度为O(1)
    - 以时间复杂度为O(n)的select为保底:扫描全部监听的文件
    - 基于react设计模式监听I/O事件:实现文件事件处理器

相关文章:

  • 2021-12-13
  • 2022-02-26
  • 2021-09-06
  • 2021-12-23
  • 2021-09-20
  • 2021-09-29
  • 2021-09-21
  • 2022-01-25
猜你喜欢
  • 2022-01-04
  • 2021-11-25
  • 2021-07-23
  • 2021-09-13
  • 2021-11-03
  • 2021-09-20
  • 2021-07-09
相关资源
相似解决方案