前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >缓存数据库Redis

缓存数据库Redis

作者头像
名字是乱打的
发布2022-05-13 11:11:22
1.4K0
发布2022-05-13 11:11:22
举报
文章被收录于专栏:软件工程
一、缓存数据库的由来和必然

Mysql数据一般存放在磁盘,效率比较低.虽然在数据库层也做了对应的缓存,但是这种缓存一般针对的是查询的内容而且粒度也比较小,一般只有表中数据没有发生变化时候,缓存才能起作用.这并不能减少业务系统对数据库产生的增、删、查、改的庞大IO压力。 这些需求使得缓存数据库应运而生

二、数据库缓存的技术特点
  • 对热点数据的高速缓存
  • 提高应用的响应速度
  • 缓解后端数据库的压力
三、缓存中间件Memcache VS Redis
代码语言:javascript
复制
Memcache:代码层次类似Hash         Redis
>支持简单数据类型                  >数据类型丰富
>不支持数据持久化存储              >支持数据磁盘持久化存储
>不支持主从                        >支持主从
>不支持分片                        >支持分片
四 、Redis为什么可以这么快(每秒可以10w+查询)
  • 完全基于内存,绝大部分请求是纯粹的内存操作(不涉及硬盘IO),执行效率高
  • 数据结构简单(没有表都是KV键值对,数据之间无关系),对数据操作也简单
  • 采用单线程,单线程也能处理高并发请求,想多核也可启动多实例(避免了频繁的上下文切换和锁竞争) ---这里单线程指的是处理网络请求时候只有单线程处理.比如redis持久化可能用子进程,子线程执行
  • 使用多路I/O复用模型,即非阻塞IO(redis是跑在单线程I/O中的,所有操作都是线性执行的,这就会导致I/O阻塞,因此我们需要多路I/O复用模型)
五 、Rdis采用的I/O多路复用函数:epoll/kqueue/evport/select
  • 具体采用何种复用函数因地制宜,根据编译平台的不用采取不同I/O多路复用函数
  • 优先选择时间复杂度为O(1)I/O多路复用函数作为底层实现
  • 以时间复杂度为O(n)的select作为保底
  • 基于react设计模式监听I/O事件

以上几点都比较好理解,下边我们针对多路 I/O 复用模型进行简单的探讨:

它采用 IO 多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理。 文件事件处理器的结构包含 4 个部分:

  • 多个 socket
  • IO 多路复用程序
  • 文件事件分派器
  • 事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)

多个 socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序会监听多个 socket,会将 socket 产生的事件放入队列中排队,事件分派器每次从队列中取出一个事件,把该事件交给对应的事件处理器进行处理.

多路 I/O 复用模型

多路I/O复用模型是利用 select、poll、epoll 可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有 I/O 事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll 是只轮询那些真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作。 这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络 IO 的时间消耗),且 Redis 在内存中操作数据的速度非常快,也就是说内存内的操作不会成为影响Redis性能的瓶颈,主要由以上几点造就了 Redis 具有很高的吞吐量。 IO复用模型比较形象的解读

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、缓存数据库的由来和必然
  • 二、数据库缓存的技术特点
  • 三、缓存中间件Memcache VS Redis
  • 四 、Redis为什么可以这么快(每秒可以10w+查询)
  • 五 、Rdis采用的I/O多路复用函数:epoll/kqueue/evport/select
  • 多路 I/O 复用模型
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档