redis知识点
2021-04-23 10:16:50 0 举报
AI智能生成
redis知识点,覆盖面较全
作者其他创作
大纲/内容
常识
磁盘
寻址:MS
带宽:G/M
内存
寻址: ns
带宽:很大
网卡
ms级响应
寻址:磁盘比内存在寻址上慢了10万倍
IO Buffer:成本问题
磁盘与磁道:扇区:一个扇区512Byte
如果扇区很多,索引成本变大。
磁盘与磁道:扇区:一个扇区512Byte
如果扇区很多,索引成本变大。
操作系统默认读写4K (从磁盘)
data pag 4K
data pag 4K
数据在内存和磁盘中的体积不一样
在磁盘存储时,存在大量的冗余现象
内存存储优化,压缩等
计算机两个基本设施
冯洛伊曼体系硬件
以太网TCP/IP网络
不稳定,可能丢包
随着文件变大,速度必然变慢
磁盘IO成为瓶颈
IO知识点
概述
内存KV数据库
速度快,支持10W+QPS
单进程,单线程,线程安全,采用IO多路复用机制
网络IO和键值对读写是由一个线程来完成的
Value支持丰富的数据类型,且支持数据操作
支持数据持久化
集群,支持主从复制,哨兵
可以用作分布式锁
可以做消息中间件,支持发布订阅
与其他数据库对比
关系型数据库
建表时必须给出shcema
建表时必须定义类型
实质定义数据字节宽度
存的时候:倾向于行级存储
没有数据的地方会padding
查询的时候:B+树->索引page->数据page
通常B+树干存在于内存
实质:减少IO操作(读取的数据量)
数据库很大的时候,性能下降?
如果没有索引,增删改查变慢
查询速度?
一个和少量查询,速度基本不变
并发大,会受硬盘带宽影响查询速度。
和memchached
的比较和优势
的比较和优势
均为KV型数据库
存储方面
memcache只用到内存
Redis会有部分数据持久化
数据支持类型
memcached没有类型概念
Redis数据有类型,而且数据可以计算
底层模型
Redis直接构建了VM机制,数据可以直接计算
Value大小
memcache 1MB
Redis 可以达到 1GB
极端情况:如果client需要从
缓存中取回v中的某一个元素
缓存中取回v中的某一个元素
memcached需要返回
全量value数据到client
全量value数据到client
server端网卡IO压力
client端需要实现代码去解析value值,并操作
redis在server端对每一种类型
都有自己的方法,可以定位并
返回某一元素
都有自己的方法,可以定位并
返回某一元素
减少数据传输量
客户端不需要额外代码解析数据
Notes:Both在Value都可以存复杂的数据结构,例如JSON。
为啥单线程Redis快?
Redis只是在网络IO和键值对读写上是单线程,其他处理会利用多线程,例如AOF等
多线程不快的几个原因
如果有竞争资源,例如多线程同时访问共享资源,
则引来额外开销,而且增加系统设计实现的复杂度,例如锁等
则引来额外开销,而且增加系统设计实现的复杂度,例如锁等
大部分操作在内存上完成
采用高效的数据结构,如哈希表,跳表
采用多路复用机制,使在网络IO操作中能够并发处理大量的客户端请求,实现高吞吐率
允许内核中,同时存在多个监听套接字和已连接的套接字
select/epoll提供了基于事件的回调机制
即针对不同时间的发生,调用响应的处理函数
即针对不同时间的发生,调用响应的处理函数
基础数据结构
api使用
应用
持久化
高可用与高性能(集群)
影响性能因素
事物
过期与删除策略
问题汇总
客户端通信协议
RESP2
缺点:只支持基础的数据类型,不能支持复杂类型,其他类型需要做转换
RESP 3
RESP 3 协议增加了对多种数据类型的支持,包括空值、浮点数、布尔值、有序的字典集合、无序的集合等
netty实现RESP解码器文章
收藏
收藏
0 条评论
下一页
为你推荐
查看更多