当前位置: 首页 > news >正文

浅介绍redis特性

       

目录

        1.In-memory data structure

        2.Programmability(可编程性)

        3.Extensibility(可拓展性)

        4.Persistence(持久化)

        5.Clustering(集群)

        6.High availability(高可用性)

        7.快


        以下纯属于个人学习见解,不是官方知识,仅供参考,有错误的地方欢迎评论区指出

        Redis是一个在内存在存储数据的中间件(中间件:与实际业务无关的服务,如数据库,redis,消息队列等等)。Redis的作用主要有两方面,一方面是是作为数据库,另一方面是作为数据缓存。根据Redis的特性,使得它能够在分布式系统中大展拳脚。

        1.In-memory data structure

        在内存中,redis存储的数据就是存储在内存中,这也就是为什么redis比MySQL快的一个重要原因。MySQL数据库的数据组织形式是以“表”为基础的,每一个数据库都包含一张或者多张表,表与表之间是有关系的,所以MySQL也被称为“关系型数据库”。既然有关系型数据库,也就有非关系型数据库,redis就是其中的一种非关系型数据库,相同的还有MongoDB,NoSQL等等,redis中数据的存储形式也很简单,也就是键值对,key和value都是字符串,简单举个例子:比如我们要存储一个人的名字,在redis存的就可以是"name":"张三",后续只要去查找name,就可以找到对应的值,这就是redis的一个最重要也是最基础的功能;

        2.Programmability(可编程性)

        可编程性指的是针对redis的操作可以使用一些简单的交互式指令进行一下简单的操作,也可以使用脚本的形式,进行批量式的一些操作(可以带有是带有逻辑的),脚本主要是使用Lua语言;

        3.Extensibility(可拓展性)

        任何一个语言要强大,就一定要有拓展性。我们可以在redis原有的基础上进行拓展。而且Redis为了方便被拓展,自己提供了一组API,我们可以通过C,C++,Rust语言去对功能进行编写,让Redis在支持原有的数据结构和功能的基础,支持更多的数据结构和功能;

        4.Persistence(持久化)

        前面说到redis之所以比MySQL快是因为把数据存储在内存中,以此来提高获取数据的速度,但是如果主机断电了,程序结束了,redis重启了等等情况,导致内存中的数据被释放了,按道理说,内存数据一旦被释放就找不回来,为什么说redis是持久性的呢?原因是因为redis存储数据是不仅会把数据存储在内存中,更会备份一份放在硬盘中,只要出现以上的释放了内存的情况,等到redis重启的时候,就回去硬盘中读取备份的数据放在内存中,这么一来就做到了持久化;

        5.Clustering(集群)

        redis作为分布式系统的一个非常重要的中间件,能够支持集群也是非常重要的。任何存储的媒介都是存在空间上限的,读取飞快的redis也不例外,redis虽然快,但是空间。所以会引入多个主机,部署多个Redis节点,每个Redis存储数据的一部分,比如现在有数据要存储,三个Redis节点,每个Redis节点存储数据的1/3,这样Redis能存储的数据上限就提高了。

        6.High availability(高可用性)

        高可用就是两个字:冗余/备份;Redis自身也是支持“主从结构的”,从节点会备份主节点的所有数据,也就是主节点如果挂了,从节点就会瞬间顶上,这也就保证了Redis的高可用性;

        7.快

        这也是Redis最鲜明的特点,那Redis为什么快呢?

                1.数据存储在内存中;

                2.核心功能逻辑简单,就是查找键值对,没有像MySQL一样的那么多约束,要根据主键,范围等等查到数据,相比较MySQL就快了;

                3.从网络的角度,采用IO多路复用的方式(epoll),简单来讲就是用一个线程同时管理多个socket,哪个socket有数据就去调用哪个socket;

                4.Redis使用的单线程模型(虽然高版本的Redis引入了多线程,但是核心功能采用的任然是单线程),这里不禁就要问了,不是说多线程可以提高系统的处理速度吗?这么这里采用单线程反而是提高了Redis的速度呢?是因为单线程模型能够减少了不必要的线程之间的竞争开销,多线程能够提高速度的前提是处理的是CPU密集型的任务,能够充分的利用CPU多核的特性,但是由于Redis的核心功能逻辑很简单,不是很吃CPU一个线程就已经能够处理的很快了,即使使用的是多线程模型,也不能快多少,使用多线程就意味着就要加锁,一旦加锁就会阻塞,竞争,等待,所以要业务场景,业务决定技术,一味的使用复杂的技术,不见得能提高多大的速度,反而会带来不必要的麻烦,越简单越好。

        

相关文章:

  • DeepSeek-R1本地部署配置要求
  • vscode配置django环境并创建django项目(全图文操作)
  • 每天五分钟深度学习框架pytorch:搭建谷歌的Inception网络模块
  • Vue3折线图,柱状图,饼图,各种图表,适用于所有全平台
  • Vscode 主题,文件图标,插件
  • Kotlin 2.1.0 入门教程(二十一)数据类
  • AI Agent 有哪些痛点问题
  • Windows操作系统部署Tomcat详细讲解
  • 47.实验室管理系统(基于SSM和html的Java项目)
  • Deepseek 限速||Deepseek 错误码
  • 搭建Windows下的嵌入式开发环境(TODO)
  • 计算机视觉:卷积神经网络(CNN)基本概念(一)
  • 【嵌入式Linux应用开发基础】read函数与write函数
  • SQL Server的安装和简单使用
  • 如何在wps中使用AI
  • DeepSeek教unity------MessagePack-02
  • JAVA实现登录过程--详细版(学习自用)
  • CAS单点登录(第7版)11.SSO SLO
  • 软件测试之接口测试理论知识
  • CNN-LSSVM卷积神经网络最小二乘支持向量机多变量多步预测,光伏功率预测
  • 沃旭能源因成本上升放弃英国海上风电项目,或损失近40亿元
  • 习近平会见缅甸领导人敏昂莱
  • 数理+AI+工程,上海交大将开首届“笛卡尔班”招生约20名
  • 马上评丨行人转身相撞案:走路该保持“安全距离”吗
  • 明查|这是“C919迫降在农田”?实为飞机模型将用于科普体验
  • 60岁济南石化设计院党总支书记、应急管理专家李有臣病逝