【Redis7】了解Redis

news2025/1/11 18:39:33

1.常见数据库

     1.1.键值存储数据库

        如 Map 一样的key-value 对,典型代表就是 Redis。

     1.2.列存储数据库

        关系型数据库是典型的行存储数据库,按行存储的数据在物理层面占用的是连续存储空间,不适合海量数据存储。而按列存储则可实现分布式存储,适合海量存储。典型代表是 HBase。

     1.3.文档型数据库

        是 NoSQL 与关系型数据的结合,最像关系型数据库的 NoSQL。典型代表是 MongoDB。

     1.4.图形(Graph)数据库

        用于存放一个节点关系的数据库,例如描述不同人间的关系。典型代表是 Neo4J。

2.Redis 的用途

        Redis 在生产中使用最多的场景就是做数据缓存。即客户端从数据库中查询出的数据首先写入到 Redis 中,然后客户端再需要访问该数据,直接读取 Redis 中的,不仅减小了响应时间,而且降低了数据库的压力。

        缓存一般可划分为两类:实时同步缓存阶段性同步缓存。实时:数据库中数据更新后,Redis 缓存中的存放的相关数据会被立即清除,再次访问数据库重新写入Redis。阶段:Redis 缓存中的数据允许在一段时间内与数据库中的数据不完全 一致。而这个时间段就是这个缓存数据的过期时间。

3.Redis 特性

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

        简单稳定:Redis 源码很少。

        持久化:Redis 内存中的数据可以进行持久化,其有两种方式:RDB 与 AOF。

        高可用集群:Redis 提供了高可用的主从集群功能,可以确保系统的安全性。

        丰富的数据类型:Redis 是一个 key-value 存储系统。支持存储的 value 类型很多,包括 String(字符串)、List(链表)、Set(集合)、Zset(sorted set --有序集合)和 Hash(哈希类型) 等,还有 BitMap(一般用于大数据量的二值性统计)、HyperLogLog(用于对数据量超级庞大的日志做去重统计)、Geospatial(地理空间,其主要用于地理位置相关的计算)类型。

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

        客户端语言广泛:Redis提供了简单的 TCP 通信协议,编程语言可以方便地的接入 Redis。 

        支持 ACL 权限控制:从 Redis6 开始引入了 ACL 模块,为不同用户定制不同的用户权限。ACL(Access Control List)访问控制列表,是一种细粒度的权限管理策略,可以针对任意用户与组进行权限控制。目前大多数 Unix 系统与 Linux 2.6 版本已经支持 ACL 了。 Zookeeper 早已支持 ACL 了。 Unix 与 Linux 系统默认使用是 UGO(User、Group、Other)权限控制策略,其是一种粗粒度的权限管理策略。

        支持多线程 IO 模型:Redis 以前采用的是单线程模型,6.0开始 版本支持了多线程模型。

4.Redis 的 IO 模型

        Redis 处理客户端请求所采用的处理架构,称为 Redis 的 IO 模型。

     4.1.单线程模型

        Redis 3.0 及其以前版本,Redis 的 IO 模型采用的是纯粹的单线程模型。即所有客户端的请求全部由一个线程处理。单线程模型采用了多路复用技术,多路选择算法常见的有三种:select 模型、poll 模型、epoll 模型。poll 模型的选择算法:采用的是轮询算法。该模型对客户端的就绪处理是有延迟的;epoll 模型的选择算法:采用的是回调方式。根据就绪事件发生后的处理方式的不同, 又可分为 LT 模型与 ET 模型。

        执行流程:每个客户端若要向Redis 提交请求,都需要与 Redis 建立一个 socket 连接,并向事件分发器注册一个事件。一旦该事件发生就表明该连接已经就绪。而一旦连接就绪,事件分发器 就会感知到,然后获取客户端通过该连接发送的请求,并将由该事件分发器所绑定的这个唯 一的线程来处理。如果该线程还在处理多个任务,则将该任务写入到任务队列等待线程处理。

        优点:可维护性高,性能高。不存在并发读写情况,不存在执行顺序的不确定性,不存在线程切换开销,不存在死锁问题,不存在为了数据安全而进行的加锁和解锁开销。

        缺点:性能会受到影响,且由于单线程只能使用一个处理器,所以会形成处理器浪费。

     4.2.混合线程模型

        Redis 4.0 版本开始,加入了多线程元素。处理客户端请求的仍是单线程模型,但对于一些比较耗时但又不影响对客户端的响应的操作,就由后台其它线程来处理。 例如,持久化、对 AOF 的 rewrite、对失效连接的清理等。

     4.3.多线程模型

        Redis 6.0 版本,客户端请求的处理采用的是多线程模型。

        优点:其结合了多线程与单线程的优点,避开了它们的不足。

        缺点:没有明显不足,处理任务线程仍是单线程,性能可能有影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1654608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新火种AI|马斯克聘用OpenAI泄密者,他们的梁子着实越结越深...

作者:小岩 编辑:彩云 就在最近,昔日就职于OpenAI的工程师Pavel Izmailov正式加入了马斯克的AI团队,他还在自己的推特上大张旗鼓的做着宣传:研究院xai。 AI工程师的跳槽本不值得惊讶,但Pavel的跳槽却在行…

什么牌子的洗地机质量最好?四款耐用高分产品推荐

洗地机具备了吸尘、擦拭、除菌等多种功能,可以一次完成多种清洁任务,帮助用户更高效地保持家居整洁,节省时间和精力,备受人们的喜爱。但是怎么挑选到优质的洗地机一直是大家关注的问题。今天,笔者将结合自己在家电行业…

mac通过termius连接Linux服务器

mac上安装 linux系统 如果有 linux服务器账号密码,那么上一步可忽略; 比如:直接连接阿里云或腾讯云账号 1. 安装termius 链接: https://pan.baidu.com/s/1iYsZPZThPizxqtkLPT89-Q?pwdbw6j 提取码: bw6j 官网 Termius - SSH platform for …

Linux-信号保存

1. 概念 进程执行信号的处理动作,称为 信号递达(Delivery) 信号从产生到递达之间的状态,称为 信号未决(Pending) 进程可以选择 阻塞(Block)某个信号 过程: 信号产生 ——…

flowable一对并发网关跳转的分析

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

hadoop学习---基于Hive的聊天数据分析报表可视化案例

背景介绍: 聊天平台每天都会有大量的用户在线,会出现大量的聊天数据,通过对聊天数据的统计分析,可以更好的对用户构建精准的用户画像,为用户提供更好的服务以及实现高ROI的平台运营推广,给公司的发展决策提…

二进制,八进制,十六进制转十进制 c++

紧接着十进制转二进制,八进制,十六进制-CSDN博客这篇文章 输入一个二进制,八进制的数,怎样能转化为十进制呢? 原理如下: K进制转十进制 按权相加法展开成一个多项式,每项是该位的数码与相应…

Maven+Junit5 + Allure +Jenkins 搭建 UI 自动化测试实战

文章目录 效果展示Junit 5Junit 5 介绍Junit 5 与 Junit 4 对比PageFactory 模式编写自动化代码公共方法提取测试用例参数化Jenkins 搭建及配置参数化执行生成 Allure 报告Maven 常用命令介绍POM 文件效果展示 本 chat 介绍 UI 自动化测试框架的搭建: 运用 page factory 模式…

高速开箱机价格与性能解析:如何挑选适合您的开箱解决方案?

随着电商和物流行业的迅猛发展,高效、自动化的包装设备成为了提升工作效率、减少人工成本的必备利器。高速开箱机作为其中的重要一环,其性能与价格成为了许多企业和个人关注的焦点。星派将深入探讨高速开箱机的价格与性能之间的关系,帮助您在…

基于springboot+vue+Mysql的口腔管理平台

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

Linux无root配置Node,安装nvm

1. 安装NVM: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash # 或者,如果你使用wget wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash 对于bash用户,可以运行&…

时序图详解

1.这是iic总线在回应时候的时序图,data in代表eeprom收到数据,回stm32的ack,数据回应,data out代表stm32收到eeprom的消息,数据输出ack回应 2.交叉线 代表在这一次输出高电平,或者在这一次也可能输出低电…

《武林秘籍》——闪侠惠递如何让消费者寄快递更安心!

现如今,网上下单寄快递的便利性让众多人享受到了电商物流飞速发展带来的红利性。今天小编直接介绍一款寄快递特别省钱的利器,就是利用闪侠惠递来寄快递。闪侠惠递寄快递,真正的实现了便宜寄快递发物流的便捷性,开创了低价发快递的…

Hypack 2024 简体中文资源完整翻译汉化已经全部完成

Hypack 2024 简体中文资源完整翻译汉化已经全部完成 Hypack 2024,资源汉化共翻译11065条。毕竟涉及测绘、水文、疏浚等专业术语太多,翻译有很多理解不正确的地方,望各位专业人员指正。 压缩包内包含Hypack 2024、Hypack 2022、Hypack 2021、…

企业如何用数字化为预提摊销业务赋能?

对于企业来说,想要实现系统化、智能化、自动化的预提摊销管理,需要做足哪些功课?常见场景下的业务难题又该如何破解?今天胜意科技就给大家介绍一下,企业如何通过数字化手段搞定预提摊销业务难题。 一、预提摊销痛点 在…

Java 三大特性之继承

目录 一、为什么需要继承? 二、继承概念 三、继承的语法 四、子类访问父类成员 五、super关键字 六、继承关系下的构造方法 七、继承关系下的初始化 八、protected关键字 九、继承的三种方式 十、final关键字 十一、继承和组合 一、为什么需要继承&#…

可视化面板布局适配屏幕-基于 flexible.js + rem 智能大屏适配

可视化面板布局适配屏幕-基于 flexible.js rem 智能大屏适配 VScode 安装cssrem插件引入flexible.js在之后的开发都使用rem为单位,安装cssrem插件就是为了快捷将px转为rem我们的设计稿是1920px,设置最小宽度为1024px,最后,我们可…

(2024,LSTM,Transformer,指数门控,归一化器状态,多头内存混合)xLSTM:扩展的 LSTM

xLSTM: Extended Long Short-Term Memory 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 1. 简介 2. 扩展的 LSTM 2.1 LSTM 回顾 2.2 sLSTM 2.3 mLSTM 2.4 xLSTM 架构 2…

Java进阶06List集合泛型

Java进阶06 集合 一、集合及其体系结构 集合是一个长度可变的容器 1、集合的体系结构 1.1 单列集合 单列集合使用add()方法添加集合元素,一次只能添加一个元素。 单列集合均实现了Collection接口,该接口还有两个子接口List和Set。 List接口 List集合…

详细分析McCabe环路复杂度(附例题)

目录 前言1. 基本知识2. 例题 前言 该知识点常出在408或者软考中,对此此文重点讲讲理论知识以及例题 对于例题平时看到也会更新 1. 基本知识 McCabe环路复杂度是一种用于衡量软件代码复杂性的指标,主要是通过计算代码中的控制流图中的环路数量来衡量…