Redis1:高并发与微服务中的键值存储利器
redis中存储的数据格式为键值对(Key,Value)
在高并发的项目和微服务的项目会频繁的用到redis
NoSQL型数据库
1.初始Redis
1.1认识NoSQL
SQL:structure query language关系型数据库
结构化:有固定格式要求(表关系,约束关系等),不建议后续的随意修改
关联的:有关联(外键),表关系易于维护,较为方便
SQL查询:查询语法固定,是一种通用语法
ACID
存储方式:在磁盘存储
扩展性:垂直(本机)
适用:数据结构相对固定、相关业务对数据安全性一致性要求较高
NoSQL:非关系型数据库
非结构化:健值型、文档型(json)、图类型、列类型等,允许后续的结构修改
非关联的:一般通过json数据去维护关系,比较复杂需要程序员自己去维护
非SQL:不同的非关系库中的语法不相同,语法较为简单
无法全部满足ACID
存储方式:在内存中存储
扩展性:水平(分布式多机)
适用:数据结构不固定、相关业务对数据安全性一致性要求较低,对性能的要求较高
1.2认识Redis
redis 诞生于2009年,Remote Dictionary Server 远程词典服务器,是一个基于内存的健值型NoSQL数据库
特征:
健值型,value支持多种不同数据结构(集合,字符串,map等),功能丰富
单线程,每个命令具有原子性,线程安全
低延迟,速度快(基于内存、IO多路复用、良好的编码C、底层实现了良好的数据结构)
技术本质
IO多路复用(I/O Multiplexing)是一种同步IO模型,通过单个线程或进程同时监视多个文件描述符(如套接字),当其中任意一个描述符就绪(可读/可写)时,内核会通知应用程序进行相应操作。其核心思想是“事件驱动”和“资源复用”。
关键特征
单线程管理多连接:与传统的“一线程一连接”模式不同,它通过Selector(选择器)或epoll等机制实现线程复用。
同步非阻塞:属于同步IO范畴,但通过非阻塞方式轮询或事件通知实现高效处理。
解决的核心问题
高并发场景的资源消耗:传统阻塞IO(如BIO)需为每个连接创建独立线程,导致线程切换开销大、内存占用高,而IO多路复用通过单线程处理数千连接,显著降低系统开销。
支持数据持久化
支持主从集群、分片集群
支持多语言客户端
1.3安装redis
见下篇笔记