【Redis】聊一下Redis基础架构
我们知道学习一个技术,最好的方式就是从全局观出发,然后针对不同的点进行拆分,一个个破解。既可以将学到的和已有的知识联系起来,又可以有一定的深度和目的性。
Redis基础架构
对于一个中间件来说,一个是使用层面(应用层面),另一个就是核心原理(系统纬度)。
对于Redis来说应用纬度包括
- 缓存应用:相应的使用场景,引出的问题等
- 集群应用:为实现高可用,高性能,必然使用集群模式
- 数据结构应用:不同的数据结构可以解决不同的问题。比如hash可以快速查找
对于系统纬度来说:
- 高性能主线:
- 线程模型:(单线程、多线程、Reactor模式等)
- 数据结构
- 持久化
- 网络框架
- 高可靠主线:
- 主从复制
- 哨兵机制
- 高可拓展主线:
- 数据分片
- 负载均衡
存哪些数据
对于键值数据库来说,基本结构就是Key-Values。但是为了支持更多业务场景,Redis提供了比较多的数据结构类型,具体就是String、List、Hash、Set、ZSet、GEO、HyperLogLog、BitMap、bitfield、Stream。
为什么要支持多样的数据结构呢
不同的数据结构,在空间和性能效率上是不同的,可以满足的业务场景也是不同,所以说需要根据具体的业务来结合使用相应的数据结构,充分发挥出对应数据结构的优点。
数据操作
上面列举了Redis的数据模型,但是对于数据的操作,无外乎就是以下三类。
- 添加/更新类
- 删除数据
- 获取数据
虽然Redis的客户端提供了基础的对数据的操作,但是比如对于一些判断数据是否存在exits、ttl等也需要提供。而数据存储的位置一般内存优先于磁盘,针对于可以容忍数据丢失的场景的业务来说。但是存储在磁盘中,可以持久化存储,但是访问速度就比较慢了,所以需要平衡二者。
一个键值数据库的基本架构就是这样
- 访问框架
- 操作模块
- 索引模块
- 存储模块
访问模式
访问模式说白了就是如何连接到Redis服务端,一般来说一是可以通过函数连接库,二是通过网络框架,而Redis采用了后者。但是网络框架上需要解决的问题,比如数据的连接请求,数据数据,数据存储。如果是单线程,那么可能出现某一个流程的阻塞,导致整体性能下降。而如果是多线程,那么可能出现多个线程之间对于共享资源的竞争,而这个数据安全问题就需要考虑。而这就是IO模型设计。
定位键值对位置
当连接请求后,通过网络框架将请求到服务端后,这个时候如何进行查找相对应的key的位置,一般来说大多采用B+树、Hash等。而对于内存操作的Redis来说 使用Hash可以很好的和内存随机操作相匹配。
【Redis】聊一下Redis基础架构相关推荐
- 50 个 Redis 必备知识:基础知识,架构、调优和监控知识及难点解决
本文包括:30 个 Redis 基础知识:10个 Redis 架构和运维必懂的知识:Redis 调优.监控知识和10个具体应用难点. 30 个 Redis 基础知识 1.Redis支持哪几种数据类型? ...
- Redis学习 - NoSQL简介、redis安装、redis基础知识、数据类型、持久化、订阅发布、主从复制、哨兵模式、缓存击穿和雪崩
学习视频地址:https://www.bilibili.com/video/BV1S54y1R7SB 完结撒花,感谢狂神 文章目录 1. NoSQL 1.1 单机Mysql的演进 1.2 当今企业架构 ...
- 填坑利器?Redis如何弥补传统MySQL架构的不足
对于技术人来说,Redis最成功的一点就是可以补充和扩展生态系统中的其他数据库.虽然使用新的后端数据库来替换旧的后端数据库,往往会被认为风险巨大.价格昂贵,但是原有的数据库可能很难进行线性扩展以满足用 ...
- redis 登录_Redis集群架构+Dubbo开发框架+SSO单点登录+Nginx+ZooKeeper
Redis集群架构 [课程介绍] Redis是现在使用为广泛的NoSQL数据库技术,其自身不仅拥有着良好的操作性能,也被广泛的应用于各种集群架构的数据整合处理之中,而本课程将通过Redis的核心作用, ...
- 高并发用redis还是mysql_高并发架构系列:Redis缓存和MySQL数据一致性方案详解
需求起因 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节.所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库. 这个业务场景,主要 ...
- redis专题:redis的主从、哨兵、集群架构的配置和部署详情、以及问题分析
文章目录 1. 在linux下安装redis 2. redis主从架构 2.1 redis主从架构搭建步骤 2.2 redis主从架构数据同步原理 2.3 如果在主从传输过程中,从节点挂了怎么办? 2 ...
- Redis泛泛而谈(详细3W字)深入浅出Redis,十年阿里架构师分享:有了它还怕不懂Redis原理?
本文适合于刚接触redis的,文章内容比较基础,大佬请绕道. 一.NoSQL入门和概述 Ⅰ-入门概述 1.为什么用NoSQL 1)单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单 ...
- Redis源码研究—基础知识
1. Redis 是什么 Redis是一个开源的使用ANSI C语言编写的基于内存的key/value存储系统,与memcache类似,但它支持的value类型更多,包括:字符串(string).链表 ...
- Redis命令总结及其基础知识讲述
Redis命令总结及其基础知识讲述 1.redis的不同之处 Redis拥有其他数据库不具备的数据结构,又拥有内存存储(这使得redis的速度非常快),远程操作(使得redis可以与多个客户端和服务器 ...
最新文章
- 基于C++的本征图像分解(Intrinsic Image Decomposition)
- weiss数据结构和算法书的使用说明
- EZ 2018 07 06 NOIP模拟赛
- Reactor中的Thread和Scheduler
- python办公自动化博客_自动化办公 Python 操控 Word
- [react] 使用React的memo和forwardRef包装的组件为什么提示children类型不对?
- linux 新建用户、用户组 以及为新用户分配权限
- html浏览器边框颜色,CSS设置字体和边框颜色时Chrome和其他主流浏览器差别的问题_html/css_WEB-ITnose...
- php mysql存图片路径_PHP 批量下传图片 怎么保存路径到mysql
- Spring实用系列-深入了解SpringMVC OncePerRequestFilter过滤器原理
- android多个网络请求如何依次执行,Android 并发和串行网络请求
- Linux环境下FFMPEG的安装与配置
- 右下角弹窗 html 怎么写,右下角弹窗广告.html
- 安全算法-对称加密与非对称加密
- Spring Cloud Alibaba微服务架构实战教程—15最详细的Gateway统一网关
- 网络安全- 专访丨互联网安全城市巡回赛冠军肖策:“大满贯”背后的秘密
- Windows热门的八款绘图软件总有一款是你想要
- php毕业论文致谢,科学网—我也晒一下毕业论文致谢,感谢诸多帮助过我的人 - 何浩宇的博文...
- Jackson注解:@JsonAlias使用详解
- 在VMware上安装win10