Redis_概述_特性_IO模型

这篇具有很好参考价值的文章主要介绍了Redis_概述_特性_IO模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本章要点

  • 掌握NoSql数据库的概念和与sql数据库的区别
  • 初步了解Redis内存数据库
  • 了解Redis内存数据库的优点及其原因
  • 掌握Redis的多线程IO模型
  • 学习Redis的安装和配置

Redis简介

Redis 全称 Remote Dictionary Server 远程字典服务! 使用C语言编写,支持网络,可基于内存也可以持久化的日志型,NoSQL开源内存数据库,其提供多种语言的API Redis是一个key-value存储系统,支持存储的val类型很多,String,List,Set,Zset(sorted set--有序集合) 和Hash

NoSQL

NoSQL (not noly sql) 泛指非关系型数据库.产生主要为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题

种类

我们根据存储的方式有不同的NoSQL数据库种类

  • 键值存储数据库

就像map一样key-value对 代表 Redis

  • 列存储数据库

我们知道关系型数据库是典型的行存储数据库,因为行存储数据库在物理层面上占用的是连续存储空间,不适合海量数据存储,而列存储方式可以实现分布式存储,适合海量存储 代表 Hbase

  • 文档型数据库

就是NoSQL和关系型数据库的结合!最像关系型数据库的NoSQL.代表MongoDB

  • 图形(Graph)数据库

用于存放节点关系的数据库.列如描述不同人间的关系.典型代表 Neo4J

Redis用途

Redis是内存数据库,相比于磁盘存储就是一个快字,所以一般用于做数据缓存!即我们客户端从数据库DBMS查询的数据首先写入到Redis中,然后当下次再有客户端需要访问该条数据,我们只需要直接读取Redis即可!,不仅减少了RT一次http的往返时间,还减少了DBMS的压力!

Redis_概述_特性_IO模型

缓存数据划分: 我们根据Redis缓存于DBMS中数据的同步性划分为2类

  • 实时同步缓存

就是一些实时性数据当DBMS更新后,Redis缓存中的相关数据会立即清楚,当下次请求来临先到DBMS中获取,然后再写入到Redis中

  • 阶段性同步缓存

当DBMS持久层数据更新后,Redis缓存中存放的相关数据并不会立即清除, 允许一段时间Redis缓存中的数据和DBMS中的数据不完全一致!这个时间段就是缓存数据的过期时间!

Redis特性

能够做缓存的技术中间件这么多,我们为何要选择Redis Redis的过人之处在哪呢?

  • 性能极高

Redis的性能是极高,Redis的读操作速度可达到 11w 次/s,写的速度可达到 8w次/s 原因:1.Redis的所有操作都是在内存中进行的 2.Redis用C语言开发 3.Redis源码非常精细

  • 简单稳点

Redis源码很少,早期自由2w行左右,从3.0加入集群功能后代码变成5w行只有.可维护性也高

  • 持久化

虽然Redis是内存数据库,但是也支持持久化操作. 有2种方式 RDB和AOF

  • 高可用集群

Redis提供了高可用的主从集群,可以保证系统的安全性

  • 丰富的数据类型

支持存储的value类型很多.包括 String,List,Set,Zset(sorted set) 和Hash 还有BitMap,HyperLogLog,Geospatial类型 BitMap:一般用于大数据的二值性统计 HyperLogLog:用于数据量庞大的日志做去重操作 Geospatial:地理空间,主要提供地理位置的相关计算

  • 强大的功能

Redis提供了数据过期功能,发布/订阅功能,简单事务功能,还支持Lua脚本扩展功能.

  • 客户端语言广泛

Redis提供了简单的TCP通信协议,编程语言可以方便的接入Redis.

  • 支持ACL权限控制

之前的权限控制十分笨拙,从Redis6开始引入了ACL模块,可以给不同的用户指定不同的权限 ALC: Access Control List 访问控制列表,是一种细粒度的权限控制策略,可以针对任意用户和组进行权限控制, UGO是一种粗粒度的权限控制操作策略

  • 支持多线程IO模型: Redis之前版本采用的是单线程模型,从6.0开始支持多线程模型

Redis的IO模型

Redis客户端提交的请求,然后由Redis处理请求所采用的处理架构,称为Redis的IO模型,不同版本的IO模型不同

单线程模型

对于Redis3.0及之前版本,Redis的IO模型就是纯粹的单线程模型,所有客户端的请求由一个线程处理!

Redis_概述_特性_IO模型

Redis的单线程采用了多路复用技术!

对于多路选择算法参见的有3种:select模型,poll模型,epoll模型

  • poll模型:采用轮询方式,该模型对客户端的就绪处理是有延迟的
  • epoll模型: 采用的是回调的方式

每个客户端如果要向Redis提交请求,需要先建立一个socket连接,并向事件分发器注册一个事件.一旦该事件发生说明该链接已经就绪.然后事件分发器就可以感知到.然后获取到客户端发送的请求,然后放入任务队列,等待处理线处理! 事件分发器会根据不同的事件将任务交给不同的时间处理器处理

混合线程模型

Redis4.0开始就加入了多线程元素,虽然处理客户端请求仍是单线程模型.但是对于一些比较耗时并且不影响客户端响应的操作交给后台其他线程处理 例如持久化操作,对AOF的rewrite,对失效链接的处理等

多线程模型

Redis6.0版本开始,才是真正意义的多线程模型.因为客户端请求的处理采用的是多线程模型

Redis_概述_特性_IO模型

多线程IO模型中的多线程仅仅是用来解析客户端请求,然后解析出请求放入到任务队列.对于具体任务的处理还是右主线程处理!这样用户就无需考虑线程安全问题.无需考虑事务控制.以及像LPUSH/LPOP执行顺序问题.文章来源地址https://www.toymoban.com/news/detail-492995.html

优缺点总结

  • 单线程模型
  • 优点:可维护性高,性能高.不存在并发读写情况.所以不存在执行顺序的不确定性,不存在切换线程的开销,不存在死锁问题,不存在为了数据安全而进行的加锁/解锁开销
  • 缺点:性能受到影响,由于单线程自会用到一个处理器,所以会有处理器的浪费
  • 多线程模型
  • 优点:其结合了单线程和多线程的优点,并且避开了他们的不足 缺点:该模型没有显示不足.如果非要说缺点的话,他并非是真正意义上的多线程模型,因为真正处理任务的线程仍然是单线程.所以性能有些许影响!

到了这里,关于Redis_概述_特性_IO模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从IO多路复用到redis线程模型

    Blocking IO - 阻塞IO NoneBlocking IO - 非阻塞IO IO multiplexing - IO多路复用 signal driven IO - 信号驱动IO asynchronous IO - 异步IO 最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。 当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线

    2024年02月07日
    浏览(38)
  • Redis学习指南(28)-Redis高性能特性之单线程模型

    Redis是一种高性能、非关系型的内存数据库,被广泛应用于缓存、消息队列、任务队列等场景。Redis之所以能够达到如此高的性能,其中一个重要的原因就是其采用了单线程模型。 Redis使用单线程模型指的是主要的工作线程只有一个,这个线程负责处理所有的客户端请求和对数

    2024年01月24日
    浏览(71)
  • Redis追本溯源(三)内核:线程模型、网络IO模型、过期策略与淘汰机制、持久化

    Redis在处理客户端请求时,通常使用单线程来进行读取、解析、执行和响应返回,因此被称为单线程应用。在4.0版本之前,这一描述是准确的。 单线程: 读取、解析、执行和响应返回。 从4.0版本开始,Redis开始使用后台线程来处理一些耗时的操作,如清理脏数据、释放超时连

    2024年02月15日
    浏览(47)
  • 三个要点,掌握Spring Boot单元测试

    单元测试是软件开发中不可或缺的重要环节,它用于验证软件中最小可测试单元的准确性。 结合运用Spring Boot、JUnit、Mockito和分层架构,开发人员可以更便捷地编写可靠、可测试且高质量的单元测试代码,确保软件的正确性和质量。 本文将从与单元测试相关的技术主题开始,

    2024年02月08日
    浏览(43)
  • Xcode 15新特性与iOS 17适配要点

    在 WWDC 23 上 Apple 推出了 Xcode 15,相比较 Xcode 14,它有如下的变化。 项目 安装包的大小继续减小,安装速度继续提升,因为 iOS 的 Components 也需要动态下载安装,否则提示 iOS 17.0 Not Install ,平台不同提示略有不同。 主界面的菜单图标与名称发生变化。 创建 iOS 项目时,增加了

    2024年02月09日
    浏览(49)
  • Web应用安全攻防战:识别十大威胁,掌握防护要点

    OWASP(Open Worldwide Application Security Project)是一家致力于应用安全威胁研究的非盈利机构。通过对超过20万个组织进行调研分析,该机构每三年左右就会发布一次《Web应用安全风险Top10》报告,这个报告已经成为全球企业开展Web应用安全防护时的重要参考。然而最近,卡巴斯基的

    2024年04月16日
    浏览(71)
  • NoSQL技术——Redis

    Redis是当下最流行的NoSQL数据库。在Redis中,数据的存储格式是以键值对的方式进行存储的。在键值对的存储形式中,值除了是常见的字符串,也可以是类似于Json对象的形式,或者是List,Map等数组格式,或者是其他的复杂类型,所以键值对的存储方式也足够满足我们日常的使

    2024年02月09日
    浏览(33)
  • NoSql--redis入门

    Redis入门 一.入门概述 1.是什么 Redis:REmote DIctionary Server(远程字典服务器),是完全开源免费的,用C语言编写的,遵守BSD协议, 是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。

    2024年02月03日
    浏览(37)
  • nosql之redis集群

    (1)单点故障、服务不可用 (2)无法处理大量的并发数据请求 (3)数据丢失 (1)提供在多个redis节点间共享数据的程序集 (2)redis集群并不支持处理多个keys命令,因需在不同的节点间移动数据,从而达不到像redis那样的性能,在高负载的情况下,可能会导致不同预判的错

    2024年02月14日
    浏览(37)
  • NoSQL之Redis配置

    关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。 SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。 主流的关系型数据库包括 Oracle、MySQL、SQL Server、Microsoft A

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包