Redis缓存-简介

概述

穿透、回种、熔断

Redis缓存-简介

缓存中间件对比 Mencache和Redis区别

主从:mysql复制备份
分片:将大数据打碎,分配到不同物理机节点的分区方案

Redis缓存-简介

redis3.0之后支持分片

Redis缓存-简介

选型:普通KEY-VALUE用Mencache。有持久化需求,和数据主从、分片等高级应用,采用Redis.

Redis分析

单进程,单线程,c语言实现,k-v数据库。数据存储在内存
不使用表,不强制数据进行关联,比关系型数据库性能高出不止一个量级
键值对存储类似HashMap查找操作都是O(1)
此单线程指处理网络请求(主线程是单线程的,包含主线程io处理,io对应相关业务处理,过期键处理,父子协调,集群协调。这些除了io事件的逻辑被封装成周期性任务,由主线程周期性处理,因为单线程,所有请求串行处理 )因此多客户端请求不会有并发问题,避免上下文切换和锁竞争。一个正式的RedisServer运行肯定不止一个线程(Redis进行持久化的时候会以子进程\子线程)
单线程可接收并发、不是并行
单线程配合io多路复用,大幅度提升性能
网络等原因制约Redis并发处理量不能进一步上升:QPS10W+峰值时,cpu没有跑满不是制约Redis性能的原因,单核单线程不是制约的原因,可以利用多核开启多个Redis
IO多路复用(非阻塞)NIO

Redis缓存-简介

阻塞与非阻塞

Redis缓存-简介

Select(监听)监控文件可读可写的文件描述符,返回满足条件个数个数

Redis缓存-简介

多路复用函数选择

操作系统不同,因地制宜,select保底方案复杂度O(N)
epoll->Linux
kqueue->MacOs
React实现文件处理器,通过多路复用,实现对多个fd监控,满足条件触发回调。保证了Redis性能,也保证了服务的简单

Redis缓存-简介