Redis(一)redis介绍及NIO原理介绍(epoll)

周老师讲的redis,“全网最权威的讲解”.

前言

几个常识:

  1. 计算机中,数据存在磁盘里,磁盘有两个关键的维度指标:1.寻址,ms级速度;2.带宽,G/M 每秒.
    内存的两个指标:1.寻址,ns级(秒->毫秒->微秒->纳秒),在寻址上磁盘比内存满了10W倍;2.带宽,也比磁盘大很多
  2. I/O buffer:成本问题,如果访问硬盘的时候,都以
    磁盘有磁道和扇区,每个扇区512Byte.
    如果一个磁盘以512字节为单位读写,会使索引成本变大.(每块数据很小的话,需要索引的块就会很多)
    格式化磁盘的时候,有个4K对齐的概念(也可以格式化8K 16K等,看需求),真正使用硬件的时候,并不是以512字节为一次读写量,无论读多少,操作系统都是最少4K从磁盘拿.
  3. 计算机信息系统 2个基础设施:1.冯诺伊曼体系的硬件;2.以太网,tcp/ip的网络

数据存储发展历史:

  1. 很早以前,刚有计算机的时候,数据可以存在文件里,使用grep awk等获取数据.随着文件变大,查询速度会变慢,硬盘I/O成为瓶颈(需要全量遍历)
  2. 这时候关系型数据库出现了,带着两个特点
    1. 从软件从把数据分为一个个的data page,每个data page大小为4K(和磁盘保持一致),但是只有这个并没有什么用.
    2. 索引,也是硬盘中4K的存储模型,从全量数据中抽取一些特征列作为索引,指向原始数据的data page;查询的时候通过B+树,树干(区间和偏移)在内存中,它的叶子节点是索引和数据的data page,减少I/O.

关系型数据库建表的时候必须给出schema,表有多少列(字段),每一列的类型(字节宽度).
写数据时倾向于行级存储,往data page写入数据的时候不管有没有值都会开辟空间,没值的字段也会(用0)占位.这样的好处是未来添加或修改字段的时候,不需要移动数据,直接覆盖写入即可.

数据库的表很大的时候,性能下降?

如果表有索引,增删改会变慢,时间花在索引的维护上.
那查询速度呢?
对于查询的速度,假设内存够大,可以把B+tree的树干存下,B+tree不受影响,查询条件能够命中索引的话,少量查询依然很快;
当查询并发很大,查询的数据散在不同data page上,会受硬盘带宽影响,速度变慢.因为需要把每个数据块以此从硬盘读到内存中

  1. 内存级别的关系型数据库
    当年SAP出的HANA,内存级别的关系型数据库,很强大很贵,2T内存的一个设备套餐下来2亿人民币
    一是因为内存在寻址和带宽上表现优于磁盘;
    二是数据在磁盘和内存中体积不一样,磁盘中没有"指针"概念,数据不能被引用而复用,数据会冗余"胀出";所以同样的数据,内存中会生一些空间

  2. 缓存,memcached,redis
    业务发展需要应对高并发和大数据量的场景,但是内存级别的关系型数据库太贵,所以有人想到了折中的方案:把一些高频访问的数据放入内存中,缓存.

redis介绍

架构师必须有的能力:技术对比,技术选型.技术选型对公司很重要.
数据库引擎百科网站:db-engines

Redis:The world’s fastest In-memory database.
1.5M ops/sec,<1ms latency(with a single AWS EC2 Server)
一般来说,redis秒级10W操作;关系型数据库(MySQL一般是千级)

redis官网:redis.io,中文网站:redis.cn

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。
Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

redis比memcached强在哪里?

redis的value有很多类型:

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值