【Redis】前言--redis产生的背景以及过程
一.介绍
为什么会出现Redis这个中间件,从原始的磁盘存储到Redis中间又发生了哪些事,下面进入正题
二.发展史
2.1 磁盘存储
最早的时候都是以磁盘进行数据存储,每个磁盘都有一个磁道。每个磁道有很多扇区,一个扇区接近512Byte。
那要从磁盘中读取数据,有两个指标很重要就是:寻址速度 和 带宽
磁盘:寻址速度是ms的,带宽是GB/M的。
内存:寻址速度是ns级的,带宽也比磁盘大上好几个数量级。
结论:磁盘比内存在寻址上慢了接近10W倍。
当数据文件很大的时候,存储的时候我们的面临的问题是,I/O问题。在读写文件时,我们常常面临很大的I/O成本问题。但是最初的解决方案是加一个buffer。
I/O 成本问题是指:假设 1T的数据存储在硬盘,每个扇区512Byte,上层创建很大的索引才能索引住每个扇区数据。操作系统无论都多少,都是最少从4k拿
总结:数据很大的时候,I/O 会越慢,最终磁盘会成为瓶颈。
2.2 数据库时代
当关系型数据库出现,创建了一个data page 概念,data page 大小是4k,这个4k和磁盘的4k对应上,正好是一次 I/O.
数据存储在数据库的时候,就是很多4k的data page 小格子,如果只存数据不建索引,数据的读取还是会很慢,因为读取的时候都是全量I/O.所以关系型数据库会再创建4k的索引,提高查询的效率,索引的 结构是B+树。
B+树是B树的一种变体,也属于平衡多路查找树,大体结构与B树相同,包含根节点、内部节点和叶子节点。多用于数据库和操作系统的文件系统中,由于B+树内部节点不保存数据,所以能在内存中存放更多索引,增加缓存命中率。另外因为叶子节点相连遍历操作很方便,而且数据也具有顺序性,便于区间查找
创建表的时候,每个列会设定数据类型,数据类型决定了字节宽度,当所有列的类型确定,则一行的数据宽度是固定的,往4k的data page 里面整体存储,所以数据库倾向于行级存储,好处就是修改数据的时候不需要移动数据,在原本的位置复写就可以了。
数据和索引都是在磁盘里,select 语句的where 条件命中内存的B+树的树干,然后走索引读取数据到内存里,内存是比较快的。

2.3 key-value数据库的产生
我们将数据库发展到极致,产生出类似SAP公司的HANA数据库。这种数据库,硬件需求大,内存约2T,硬件服务费很贵。不适合小中型公司选择。
随着互联网的发展,我们面临了一个新的问题。如何才能抵挡高并发,大数据量导致的查找变慢呢?(注意,数据量变大,仅仅影响多范围数据查找,单主键索引数据查找并不会影响性能。我们的业务逻辑,通常是多条数据查找,所以才会有瓶颈)
于是我们的k-v数据库产生了,redis 应运而生。
三.总结
redis的诞生,解决了应对实际业务中对高并发,大数量业务,提供更丰富API使用以及丰富多样的数据结构。后续会从数据结构开始,一步步揭开redis的面纱。
如有侵权请联系 删除,谢谢。
相关文章:
【Redis】前言--redis产生的背景以及过程
一.介绍 为什么会出现Redis这个中间件,从原始的磁盘存储到Redis中间又发生了哪些事,下面进入正题 二.发展史 2.1 磁盘存储 最早的时候都是以磁盘进行数据存储,每个磁盘都有一个磁道。每个磁道有很多扇区,一个扇区接近512Byte。…...
Java面试-微服务篇-SpringCloud
Java面试-微服务篇-SpringCloud SpringCloud 常见组件注册中心Eureka, Nacos负载均衡Ribbon服务雪崩, 熔断降级微服务的监控来源 SpringCloud 常见组件 通常情况下 Eureka: 注册中心Ribbon: 负载均衡Feign: 远程调用Hystrix: 服务熔断Zuul/Gateway: 网关 SpringCloudAlibaba…...
Git使用详解
文章目录 ⭐️写在前面的话⭐️📌What is it?Git的诞生 🌈Why learn it?集中式vs分布式 🧲Who does it?🎈When to use it? And Where to use it?💊How to use it?(重点)1、安装Git在Linux…...
智慧楼宇可视化视频综合管理系统,助力楼宇高效安全运行
随着互联网技术的进步和发展,智能化的楼宇建设也逐步成为人们选择办公场所是否方便的一个重要衡量因素。在智能化楼宇中,安全管理也是重要的一个模块。得益于互联网新兴技术的进步,安防视频监控技术也得到了快速发展并应用在楼宇的安全管理中…...
【opencv】计算机视觉:实时目标追踪
目录 前言 解析 深入探究 前言 目标追踪技术对于民生、社会的发展以及国家军事能力的壮大都具有重要的意义。它不仅仅可以应用到体育赛事当中目标的捕捉,还可以应用到交通上,比如实时监测车辆是否超速等!对于国家的军事也具有一定的意义&a…...
生态对对碰|华为OceanStor闪存存储与OceanBase完成兼容性互认证!
近日,北京奥星贝斯科技有限公司 OceanBase 数据库与华为技术有限公司 OceanStor Dorado 全闪存存储系统、OceanStor 混合闪存存储系统完成兼容性互认证。 OceanBase 数据库挂载 OceanStor 闪存存储做为数据盘和日志盘,在 OceanStor 闪存存储系统卓越性能…...
微服务负载均衡器Ribbon
1.什么是Ribbon 目前主流的负载方案分为以下两种: 集中式负载均衡,在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件的(比如 F5),也有软件的(比如 Nginx)。 客户端根据…...
win10戴尔电脑安装操作系统遇到的问题MBR分区表只能安装GPT磁盘
首先按F2启动boot管理界面 调整启动盘的启动顺序,这里启动U盘为第一顺序。 第一步 选择安装程序的磁盘 第二步 转换磁盘为GPT磁盘 一般出现 磁盘0和1,说明存在两个盘 ,这里两个盘不是说的是C盘和D盘的问题,而是在物理上实际存在…...
阿里云服务器(vgn7i-vws) anaconda(py39)+pytorch1.12.0(cu113)
用xshell连接ip地址,端口号22,输入用户密码 安装anaconda 2022 10 py3.9 wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh sha256sum Anaconda3-2022.10-Linux-x86_64.sh #校验数据完整性 chmod ux Anaconda3-2022.10-…...
使用 STM32F7 和 TensorFlow Lite 开发低功耗人脸识别设备
本文旨在介绍如何使用 STM32F7 和 TensorFlow Lite框架开发低功耗的人脸识别设备。首先,我们将简要介绍 STM32F7 的特点和能力。接下来,我们将讨论如何使用 TensorFlow Lite 在 STM32F7 上实现人脸识别算法。然后,我们将重点关注如何优化系统…...
【wireshark】基础学习
TOC 查询tcp tcp 查询tcp握手请求的代码 tcp.flags.ack 0 确定tcp握手成功的代码 tcp.flags.ack 1 确定tcp连接请求的代码 tcp.flags.ack 0 and tcp.flags.syn 1 3次握手后确定发送成功的查询 tcp.flags.fin 1 查询某IP对外发送的数据 ip.src_host 192.168.73.134 查询某…...
使用Java连接Hbase
我在网上试 了很多代码,但是大部分都不能实现,Java连接Hbase,一直报一个错 java.util.concurrent.ExecutionException: org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode NoNode for /hbase/hbaseid一直也不清楚为什…...
OCR是什么意思,有哪些好用的OCR识别软件?
1. 什么是OCR? OCR(Optical Character Recognition)是一种光学字符识别技术,它可以将印刷体文字转换为可编辑的电子文本。OCR技术通过扫描和分析图像中的文字,并将其转化为计算机可识别的文本格式,从而…...
Springmvc实现增删改差
一、包结构 二、各层代码 (1)数据User public class User {private Integer id;private String userName;private String note;public User() {super();}public User(Integer i, String userName, String note) {super();this.id i;this.userName userName;this.note note;…...
CentOS 7 使用cJSON 库
什么是JSON JSON是一种轻量级的数据交换格式,可读性强、编写简单。键值对组合编写规则,键名使用双引号包裹,冒号:分隔符后面紧跟着数值,有两种常用的数据类型是对象和数组。 对象:使用花括号{}包裹起来的…...
Linux——使用kill结束进程并恢复进程
目录 查看进程结束进程修复进程 查看进程 在linux中,关闭某进程之前先查看已经在运行的进程有哪些,使用下面命令查看: ps aux | grep -i apt 命令查看哪个进程正在使用 apt结束进程 结束某线程的命令为: sudo kill -9 PID 命令…...
【Linux虚拟内存的配置】
设置Linux虚拟内存 注意:在做项目时,电脑内存不够用,怎么办? 这里给大家提供了一种解决方案,用磁盘换内存,具体如下: 虚拟内存swap介绍 如果你的服务器的总是报告内存不足,并且时常因为内存不足而引发服务被强制kill的话,在不增加物理内…...
基于C#实现外排序
一、N 路归并排序 1.1、概序 我们知道算法中有一种叫做分治思想,一个大问题我们可以采取分而治之,各个突破,当子问题解决了,大问题也就 KO 了,还有一点我们知道内排序的归并排序是采用二路归并的,因为分治…...
HTML CSS登录网页设计
一、效果图: 二、HTML代码: <!DOCTYPE html> <!-- 定义HTML5文档 --> <html lang="en"> …...
dos 命令 判断路径中包含某字符并移动文件
SET GenFolder C:\Users\administered\Desktop\t2\old_file set path1C:\Users\administered\Desktop\t1\crontab_master set path2C:\Users\administered\Desktop\t2\old_file if not exist %GenFolder% ( echo %GenFolder%目录不存在,已创建该目录&#x…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
