Redis01——Redis产生背景
Redis 产生背景
1.1.数据存储的发展史
1.1.1.磁盘时代
很久之前,我们的数据存储方式是磁盘存储,每个磁盘都有一个磁道。每个磁道有很多扇区,一个扇区接近512Byte。
磁盘的寻址速度是毫秒级的,带宽是GB/M的。内存是ns级的,带宽也比磁盘大上好几个数量级。总体来说,磁盘比内存在寻址上慢了接近10W倍。
在这段历史中,我们的面临的问题是,I/O问题。在读写文件时,我们常常面临很大的I/O成本问题。但是最初有个最初的解决方案是加一个buffer。
科普:什么是buffer?
buffer是指一个缓冲区,我们在缓冲区来进行一个暂时的存放,之后统一运输给内存,这样会使得I/O的性能有略微提升。
1.1.2.数据库的产生
任何技术都不会平白无故产生。
我们数据库技术就是由于磁盘的I/O瓶颈。为了解决这个问题,我们将磁盘扇区分为4K的一个个小的分区,构成索引。有了这些索引值,我们能通过索引,进行更加便捷的查找。为了我们能够更快的查找,我们将索引使用B+树进行存储。
科普:B+树是什么?
我们普通的1-0树,又称二叉查找树(二叉排序树),二叉查找树和排序树是同一种树,就是单纯的1-0树,按照中序遍历的存储方式进行从小到大(从大到小)进行存储。(初学者可能误以为两种树,包括我刚开始学习数据结构的时候)。
二叉查找树(二叉排序树)由于在插入和删除的时候,容易出现不太ok的情况,例如,可能在删除过程中删除为一个链表,这样查找效率依旧会变得很低。所以,我们使用旋转,通过左右旋转,将这种“链表”式(极端情况下)的树转化为左右平衡的树,这就是所谓的B-树。(注意误区,B树和B-树是一个树么?初学者认为后面一种是B减树,实际不是,是翻译过来的时候加的分隔符。B为Balance平衡的意思)
当然,我们的数据库文件不是二叉的,文件系统也不是,所以,我们多叉的查找树,就是所谓的B+树。+号代表每个节点不止二叉的意思。
(用自己的话粗略总结,详细还是看B-tree,B+tree的定义)
在我们数据库的查找中,我们遇到一个问题?那就是字节宽度问题。我们建库的时候必须给出schema,我们行级存储,即使是该列为空,依旧要占位,那么,数据量庞大的时候,将会浪费很大的存储空间。但是这样的好处是,我们可以在update的时候不需要移动数据的位置。
1.1.3.key-value数据库的产生
任何技术都不会平白无故产生。
我们将数据库发展到极致,产生出类似SAP公司的HANA数据库。这种数据库,硬件需求大,内存约2T,硬件软件服务总和约2亿一个套餐。
随着互联网的发展,我们面临了一个新的问题。如何才能抵挡高并发,以及大数据导致的查找变慢呢?(注意,数据量变大,仅仅影响多数据查找,单数据查找并不会影响性能。我们的业务逻辑,通常是多条数据查找,所以才会有瓶颈)
于是我们的k-v数据库产生了,这依赖于两个基础设施。冯诺依曼体系的硬件,以太网,和tcp/ip网络。参考附件:冯诺依曼体系图
科普:什么是冯诺依曼体系?
我们的操作系统老师是个年纪很大的教授,这边引用他的上课原话。
冯诺依曼体系,至今没有一个明确的定义。有的书说有5个,有的书说有7个,但是,我依照某年考研题,来规范一下冯诺依曼体系。
冯诺依曼体系由五部分组成,控制器,运算器,内存,总线,硬盘和I/O接口6部分组成。
(如何记忆冯诺依曼体系构成:CPU分为控制器运算器,其他都为CPU服务,运算需要内存,连接需要总线,我们要读写必须要I/O接口。一切以CPU考虑,就能记全6个)
参考附件:冯诺依曼体系图

Redis01——Redis产生背景的更多相关文章
- Redis01 Redis服务端环境搭建
1 前提准备 下载 VM centos6 安装包,安装好虚拟系统 2 安装远程连接工具 工具获取 2.1 SecureCRT.Xshell 连接远程服务器 2.2 WinSCP 向远程服务器发送文件 ...
- Redis01——Redis介绍
1.NoSQL数据库概述 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库. NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式 ...
- Redis01——Redis究竟支持哪些数据结构
Redis已经越来越多地应用到互联网技术中,而关于Redis的相关问题,也成为面试中必不可少的一部分,本文开始将会逐渐把我了解到的关于Redis的一些面试问题整理出来,供各位参考,如有不对之处,烦请指 ...
- redis学习(一)
一.redis简介 Redis是基于内存.可持久化的日志型.key-value高性能存储系统.关键字(Keys)是用来标识数据块.值(Values)是关联于关键字的实际值,可以是任何东西.有时候你会存 ...
- Redis 5.0 集群搭建
Redis 5.0 集群搭建 单机版的 Redis 搭建 https://www.jianshu.com/p/b68e68bbd725 /usr/local/目录 mkdir redis-cluste ...
- redis的哨兵集群,redis-cluster
#主从同步redis主从优先1.保证数据安全,主从机器两份数据一主多从2.读写分离,缓解主库压力主redis,可读可写slave身份,只读 缺点1.手动主从切换假如主库挂了,得手动切换master ...
- redis学习历程
redis只知道作用于缓存,其它一无所知,所以现在系统的 学习下,这样应用的时候可以考虑多面性和实用性 首先先了解一下redis的背景和概念 背景 Redis是一个开源的使用ANSI C语言编写.支持 ...
- Redis高可用升级
前言: 缓存对应实时性要求比较高的业务需求可谓十分重要,但缓存中的实时数据一旦丢失,将直接影响整个业务功能.考虑到各场景的业务需求,redis推出了高可用的方案,即:主从+哨兵的HA机制. 准备 &q ...
- 使用 HAProxy, PHP, Redis 和 MySQL 轻松构建每周上亿请求Web站点
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
随机推荐
- 综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列
来源:http://t.cn/RVDWcfe 一.资料文档 Kafka:中.有kafka作者自己写的书,网上资料也有一些.rabbitmq:多.有一些不错的书,网上资料多.zeromq:少.没有专门写 ...
- 无监督异常检测之卷积AE和卷积VAE
尝试用卷积AE和卷积VAE做无监督检测,思路如下: 1.先用正常样本训练AE或VAE 2.输入测试集给AE或VAE,获得重构的测试集数据. 3.计算重构的数据和原始数据的误差,如果误差大于某一个阈值, ...
- 《Java语言程序设计》第三讲类与对象“动手动脑”
一.以下代码为何无法通过编译?哪儿出错了? 答: 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法. 二. (1)以下代码输出结果是什么? package xy; public cla ...
- sass与less对比学习
参考链接:https://blog.csdn.net/luluan_lin/article/details/83749176
- Angular5 自定义scrollbar样式之 ngx-perfect-scollbar
版本 angular 5.0 ngx-perfect-scrollbar ^5.3.5 为什么不用 ngx-perfect-scrollbar 最新的版本 v7 呢? 因为它报错啊!!! 每次init ...
- [转帖]开始使用Chronograf
地址:https://docs.influxdata.com/chronograf/v1.6/introduction/getting-started/ https://www.cnblogs.com ...
- 烯烃(olefin) 题解
题面 对于每个点,我们可以用一次dfs求出这个点到以这个点为字树的最远距离和次远距离: 然后用换根法再来一遍dfs求出这个点到除这个点子树之外的最远距离: 显然的,每次的询问我们可以用向上的最大值加向 ...
- VC/MFC 进程间通信方法总结
摘 要 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求.编写多进程 / 多线程程序成为现代程序设计的一个重要特点,在多进程程序设计中,进程间的通信是不可避免的. M ...
- ASP.NET练习③——AspNetChosmePager
aspx代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="_Chosm ...
- JS基础_关系运算符
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...