[Redis][Redis简介]详细讲解

目录

  • 1.认识 Redis
  • 2.Redis 特性
    • 1.速度快
    • 2.基于键值对的数据结构的服务器
    • 3.丰富的功能
    • 4.简单稳定
    • 5.客户端语言多
    • 6.高扩展性
    • 7.持久化(Persistence)
    • 8.主从复制
    • 9.⾼可⽤和分布式
  • 3.Redis 使用场景
    • 1.数据库
    • 2.Cache
    • 3.消息队列
  • 4.注意


1.认识 Redis

  • Redis是⼀种基于键值对(Key-Value)的NoSQL数据库
  • Redis会将所有数据都存放在内存中,所以它的读写性能⾮常惊⼈
  • 与很多键值对数据库不同的是,Redis 中的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLogGEO(地理信息定位)等多种数据结构和算法组成,因此Redis可以满⾜很多的应⽤场景
  • Redis还可以将内存的数据利⽤快照和⽇志的形式保存到硬盘上,这样在发⽣类似断电或者机器故障的时候,内存中的数据不会“丢失”

2.Redis 特性

1.速度快

  • Redis的所有数据都是存放在内存中的,比访问硬盘的数据库要快得多
    • MySQL主要是通过""的方式来存储组织数据的"关系型数据库"
    • Redis主要是通过"键值对"的方式来存储组织数据的"非关系型数据库"
  • Redis核心功能都是比较简单的逻辑,核心功能都是比较简单的操作内存的数据结构
  • Redis使⽤了单线程,预防了多线程可能产⽣的竞争问题
    • Redis在6.0版本引⼊了多线程机制,但主要也是在处理⽹络和IO,不涉及到数据命令
    • 即命令的执⾏仍然采⽤了单线程模式
  • 从网络角度上,Redis使用了IO多路复用的方式(epoll)

2.基于键值对的数据结构的服务器

  • 与很多键值对数据库不同的是, Redis中的值(Value)不仅可以是字符串,⽽且还可以是具体的数据结构,这样不仅能便于在许多应⽤场景的开发,同时也能提⾼开发效率
  • Redis的全程是Remote Dictionary Server,它主要提供了5种数据结构:字符串(string)、哈希)、列表(list)、集合(set)、有序集合(orderedset/zset),同时在字符串的基础之上演变出了位图(Bitmaps)和HyperLogLog,并且随着LBS(Location Based Service,基于位置服务)的不断发展,Redis3.2.版本种加⼊有关GEO(地理信息定位)的功能
  • 总结:Key都是stringValue可以是上述的这些数据结构

3.丰富的功能

  • 提供了键过期功能,可以⽤来实现缓存
  • 提供了发布订阅功能,可以⽤来实现消息系统
  • ⽀持Lua脚本功能,可以利⽤Lua创造出新的Redis命令
    • 针对Redis的操作,可以直接通过简单的交互式命令进行操作
    • 也可以通过脚本的方式,批量执行一些操作(带有逻辑)
  • 提供了简单的事务功能,能在⼀定程度上保证事务特性
  • 提供了流⽔线(Pipeline)功能,这样客⼾端能将⼀批命令⼀次性传到Redis,减少了⽹络的开销

4.简单稳定

  • Redis的源码很少,早期版本的代码只有2万⾏左右, 3.0版本以后由于添加了集群特性,代码增⾄5万⾏左右,相对于很多NoSQL数据库来说代码量相对要少很多,也就意味着普通的开发和运维⼈员完全可以“吃透”它
  • Redis使⽤单线程模型, 这样不仅使得Redis服务端处理模型变得简单,⽽且也使得客⼾端开发变得简单
  • Redis不需要依赖于操作系统中的类库,Redis⾃⼰实现了事件处理的相关功能
  • 与简单相对的是Redis具备相当的稳定性,在⼤量使⽤过程中,很少出现因为Redis⾃⾝BUG⽽导致宕掉的情况

5.客户端语言多

  • Redis提供了简单的TCP通信协议,很多编程语⾔可以很⽅便地接⼊到Redis,并且由于Redis受到社区和各⼤公司的⼴泛认可,所以⽀持Redis的客⼾端语⾔也⾮常多,⼏乎涵盖了主流的编程语⾔,例如:C、C++、Java、PHP、Python、NodeJS等

6.高扩展性

  • 可用C、C++、Rust编写Redis拓展 --> 本质上是动态链接库
  • 自己扩展Redis功能,可以让其支持更多的数据结构以及更多的明林

7.持久化(Persistence)

  • 将数据放在内存中是不安全的,⼀旦发⽣断电或者机器故障,重要的数据可能就会丢失

  • Redis提供了两种持久化⽅式:RDB和AOF,可以⽤两种策略将内存的数据保存到硬盘中,这样就保证了数据的可持久性
    请添加图片描述

  • 内存为主,硬盘为辅,硬盘相当于对内存的数据备份了一下


8.主从复制

  • Redis提供了复制功能,实现了多个相同数据的Redis副本(Replica)
    • 复制功能是分布式Redis的基础
      请添加图片描述

9.⾼可⽤和分布式

  • Redis提供了⾼可⽤实现的Redis哨兵(Redis Sentinel),能够保证Redis结点的故障发现和故障⾃动转移
  • 也提供了Redis集群(Redis Cluster),是真正的分布式实现,提供了⾼可⽤、读写和容量的扩展性

3.Redis 使用场景

1.数据库

  • 大多数情况下,考虑到数据存储,优先考虑的是"大"
  • 但也有少数情况,考虑的是"快"
  • 因为Redis将数据存储在内存中,所以Redis作为数据库是非常快的

2.Cache

  • 二八原则,把热点数据拎出来,存储在Redis中
    • Redis存的是部分数据,全量数据以MySQL为主
  • 缓存机制⼏乎在所有⼤型⽹站都有使⽤,合理地使⽤缓存不仅可以加速数据的访问速度,⽽且能 够有效地降低后端数据源的压⼒
  • Redis提供了键值过期时间设置,并且也提供了灵活控制最⼤内存和内存溢出后的淘汰策略

3.消息队列

  • 消息队列系统可以说是⼀个⼤型⽹站的必备基础组件,因为其具有业务解耦、⾮实时业务削峰等特性
  • Redis提供了发布订阅功能和阻塞队列的功能,虽然和专业的消息队列⽐还不够⾜够强⼤,但是 对于⼀般的消息队列功能基本可以满⾜
  • 如果当前场景中,对于消息队列的功能依赖的不是很多,并且又不想引入额外的依赖了,Redis可以考虑作为一个选择

4.注意

  • Redis的字符串,不会对字符串编码做任何处理
    • Redis不认识字符,只认识字节
  • 在启动Redis客户端的时候,加上一个--raw选项,就可以使Redis客户端能够自动的把二进制数据尝试翻译

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

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

相关文章

Why Is Prompt Tuning for Vision-Language Models Robust to Noisy Labels?

文章汇总 本文的作者针对了提示学习的结构设计进行了分析,发现了一些规律: 1)固定的类名令牌为模型的优化提供了强正则化,减少了由噪声样本引起的梯度。 2)从多样化和通用的web数据中学习到的强大的预训练图像文本嵌入为图像分类提供了强大…

ARM总复习

1.计算机的组成 输入设备 输出设备 存储设备 运算器 控制器、总线 2.指令和指令集 2.1 机器指令 机器指令又叫机器码,在运算器内部存在各种运算电路,当处理器从内存中获取一条机器指令,就可以按照指令让运算器内部的指定的运算电路进行运…

百度智能云SSL证书安装指南

第一步:准备SSL证书 在华测ctimall(https://www.ctimall.com/ssl)申请SSL证书后,您会收到一个包含多种证书格式的压缩文件。请解压此文件,并找到Nginx目录中的证书文件,因为这是百度智能云中需要用到的证书…

Hadoop的一些高频面试题 --- hdfs、mapreduce以及yarn的面试题

文章目录 一、HDFS1、Hadoop的三大组成部分2、本地模式和伪分布模式的区别是什么3、什么是HDFS4、如何单独启动namenode5、hdfs的写入流程6、hdfs的读取流程7、hdfs为什么不能存储小文件8、secondaryNameNode的运行原理9、hadoop集群启动后离开安全模式的条件10、hdfs集群的开机…

九章云极DataCanvas公司荣获2024年服贸会“科技创新服务示范案例”

9月15日,2024年中国国际服务贸易交易会(服贸会)示范案例交流会暨颁奖典礼在北京国家会议中心举行,九章云极DataCanvas 公司自研的DataCanvas Alaya NeW智算操作系统凭借卓越的AI创新实力、前瞻性的市场布局以及突破性的技术革新成…

pc端的屏保实现

背景 偶然间,在使用一款google插件的时候,发现它有一个小功能,只要我停留在它的页面不操作10分钟以上,就会自动给我打开一个屏保界面,这样的 目的 这种华而不实的功能,正好适合个人博客,所以…

Prometheus监控k8s环境构建

传统架构中比较流行的监控工具有 Zabbix、Nagios 等,这些监控工具对于 Kubernetes 这类云平台的监控不是很友好,特别是当 Kubernetes 集群中有了成千上万的容器后更是如此,本章节学习下一代的云原生监控平台---Prometheus。 一、基于kuberne…

医学数据分析实训 项目七 集成学习--空气质量指标--天气质量分析和预测

项目七:集成学习 实践目的 理解集成学习算法原理;熟悉并掌握常用集成学习算法的使用方法;熟悉模型性能评估的方法;掌握模型优化的方法。 实践平台 操作系统:Windows7及以上Python版本:3.8.x及以上集成开…

LineageOS连接网络提示IP配置失败

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ IP配置失败 连接所有网络都提示IP配置失败,通过配置静态IP也连不上网络,感觉就是WIFI模块不能用了。 使用 Magisk root 后就这样了&am…

LeetCode004-两个有序数组的中位数-最优算法代码讲解

最有帮助的视频讲解 【LeetCode004-两个有序数组的中位数-最优算法代码讲解】 https://www.bilibili.com/video/BV1H5411c7oC/?share_sourcecopy_web&vd_sourceafbacdc02063c57e7a2ef256a4db9d2a 时间复杂度 O ( l o g ( m i n ( m , n ) ) ) O(log(min(m,n))) O(log(min(…

spring security 手机号 短信验证码认证、验证码认证 替换默认的用户名密码认证132

spring security内置的有用户名密码认证规则,还可以调用第三方微信、qq登录接口实现登录认证,这里使用自定义的手机号和短信验证码实现登录认证。 要实现自定义的手机号和短信验证码认证需要了解用户名密码认证的逻辑,仿照该逻辑就可以写出…

Java进阶之集合框架(Set)

【基本内容】 二、Set接口(接上一章) Set是Java集合框架中不允许有重复元素的无序集合,其典型的实现类是HashSet,它完全是遵循Set接口特性规范实现的,无序且不允许元素重复;而Set接口下的实现类还有LinkedHashSet和TreeSort&#…

记录生产环境,通过域名访问的图片展示不全,通过ip+端口的方式访问图片是完整的

原因:部署nginx的服务器硬盘满了 排查发现nginx日志文件占用了大量硬盘 解决方案: 删除该文件,重启nginx服务,问题解决。

AI修手有救了?在comfyui中使用Flux模型实现局部重绘案例

🐱‍🐉背景 局部重绘相关的话题我们已经讨论和测试过很多次了,比如说inpaint模型、brushnet模型、powerpaint模型等等,最近对于flux模型重绘画面的案例也越来越多了,那我们就结合flux模型的重绘来试试看效果。 &…

前端mock了所有……

目录 一、背景描述 二、开发流程 1.引入Mock 2.创建文件 3.需求描述 4.Mock实现 三、总结 一、背景描述 前提: 事情是这样的,老板想要我们写一个demo拿去路演/拉项目,有一些数据,希望前端接一下,写几个表格&a…

qt信号与槽(自定义)

自定义信号与槽 在qt里,我们可以自己去定义信号与槽。 这里举个栗子: 信号的定义 在我们类里边定义一个信号,我们需要用signals:来声明,不用再去cpp文件里边定义。而且返回值必须是void,可以有参数。 槽…

2024年最新测绘地理信息规范在线查看下载

随着科技的飞速发展,测绘地理信息行业也迎来了新的机遇与挑战。 为了确保测绘地理信息的准确性和规范性,每年都会出台了一系列最新的测绘地理信息规范。 本文将历年地形行业发布的相关标准规范,包括现行和一些已经弃用的标准,截…

数据结构与算法——详谈栈和队列

目录 一:栈 1.1:栈的概念结构与实现 1.1.1:栈的概念结构 1.1.2:栈的实现 1.2:栈的各个功能实现 1.2.1:对栈进行初始化 1.2.2:判空栈 1.2.3:入栈 1.2.4:出栈 1.…

一文读懂AI安全治理框架

随着AI的发展以及研究,我们总会提到AI带来的一些潜在威胁,但截止目前我还没有完全的梳理过AI到底有哪些潜在的风险,今天就来一一看一下!陆续补齐。

自动化中验证码的操作笔记,懂的赶紧收藏!

在自动化测试的过程中,验证码一直被视为一个“拦路虎”。很多测试人员在做接口或UI自动化时都会遇到验证码的阻碍,导致测试无法继续进行。今天,我们就来讨论如何在自动化过程中破解验证码,快速绕过这道关卡,轻松完成自…