redis 基础篇(redis 理解)

目录

redis 特性介绍

redis 的一些特性(优点)

1. 在内存中存储数据

2. 可编程的

3. 可扩展

4. 持久化

5. 支持集群

6. 高可用

redis 的应用场景

数据库

作缓存

会话存储

作消息队列

redis 不适合做的事情

redis 介绍

redis 客户端形态

命令行

图形化界面

基于 redis 的 api 自行开发客户端

redis 特点


redis 特性介绍

redis 实际上是一个 内存中存储数据的中间件。

用于作为数据库,用于作为数据缓存。

适应于分布式操作系统。

redis 的一些特性(优点)

1. 在内存中存储数据

MySql 主要是通过表来存储数据,而 redis 主要通过键值对来存储数据,MySql 是关系型数据库,而 redis 是非关系型数据库。

redis 的 key 都是 string, value 则是一些数据结构。

value 的类型:

  • string

  • hashes

  • lists

  • sets

  • sorted

  • sets

  • streams

  • ...

上述的这些数据结构都可以用键值对类组织。

2. 可编程的

针对 redis 的操作,可以直接通过简单的交互式命令进行操作,也可以通过一些脚本的方式,批量执行的一些操作。

3. 可扩展

可以通过一些语言编写 redis 的扩展(本质就是一个动态链接库)

支持的语言:

  • C

  • C++

  • Rust

4. 持久化

redis 是把数据放在内存上的,但是内存上的数据是易失的,进程退出/系统重启就丢失了。

持久化的原理:

redis 会把数据也存储到硬盘上一份,但是主要是以内存为主,影片上的数据就相当于备份,如果重启就会将数据恢复到内存。

5. 支持集群

类似于分库分表,一个 redis 能存储的数据是有限的,所以就可以映入多个主机,部署多个 redis 节点,每个 redis 存储数据的一部分。

6. 高可用

高可用(备份),redis 支持“主存结构”,从节点就相当于主节点的备份。

对于 redis 的特性其实还有一个——快。

  1. redis 的数据在内存,就比访问硬盘的数据库就快。

  2. redis 的核心功能都比较简单, 核心功能就是简单操作内存中的数据结构。

  3. 从网络角度上,redis 使用了 IO 多路复用的方式(epoll)

  4. redis 使用的是单线程模型(虽然更高版本的 redis 引入了多线程),这样的单线程模型,介绍了不必要的线程竞争开销。

    redis 的应用场景

    数据库

    把 redis 当作数据库。

    大多数情况下,我们数据库优先考虑的是大,但是还是有一些场景,考虑的是“快”。

作缓存

使用 MySql 存数据,大,慢,但是我们可以把热点数据拿出来放在 redis 中。

上面的两个 redis 的应用场景下:
1.存全量数据,这里的数据是不能随便丢的。
2.作缓存 redis 里面的数据是可以丢失部分的。

会话存储

redis 可以作会话存储。

为了是实现用户身份信息的保存,我们还是需要 session 来配合,session 存储在服务器里面, cookie 只是一个用户身份的标识。

所以为了方便,就可以把会话存储到 redis 里面,每一次用户就可以快速的进行身份识别。

这样做即使应用服务器重启了,用户的身份信息不会丢失。

作消息队列

这里的消息队列是一个服务器。

但是 redis 作为消息队列并不是很完美。

RabbitMQ, Kafka, RocketMQ.....作为消息队列是很好的。

redis 不适合做的事情

redis 不适合存储大规模数据~

redis 是一个使用内存存储数据的中间件。

一般被作为 内存数据库/缓存/消息队列来使用~

redis 介绍

  1. redis 的客户端和服务器是用网络通信的

  2. redis 的客户端和服务器可以在同一台主机上,如果在同一台主机上,那么就是使用本地环回。

  3. redis 服务端不是只为了一个客户端提供服务。

  4. redis 服务器(本体)负责提供存储和管理数据。

redis 客户端形态

命令行
redis-cli -h 127.0.0.1 -p 6379

上面就是 redis 客户端的登录方式

  • -h:表示登录的主机 ip

  • -p:表示端口号 port

图形化界面

(桌面程序,web 程序)

这个一般不常用。

基于 redis 的 api 自行开发客户端

就是使用编写代码来操作 redis,这个是最常用的。

redis 特点

redis 是比较快的,但是这里的快是和 mysql 比较的。

比如现在有一个单机系统,然后要存储一些数据, redis 是通过键值对来存储的,如果现在使用 map 和 redis 来比较,那么显然是redis 是比 map 直接操作内存慢的,redis 还是要通过网络,才能操作内存。

所及 redis 还是适应于分布式。

上述场景是否要引入 redis,还是要结合实际场景来确认。

引入 redis 的缺点:

  • 慢!

优点:

  • 即使应用服务器重启也不会影响存入的数据。

未来要扩展成分布式也是使用 redis 是更佳的。

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

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

相关文章

UBI管理开销

什么是管理开销呢?为了管理Nand的空间,实现磨损平衡、坏块管理等等功能,必须占用一部分空间来存储关键数据,就好像文件系统的元数据。管理占用的空间是不会呈现给用户空间使用的,这空间即为管理的开销。 对Nand来说&a…

【数学建模】清风数模中正课4 拟合算法

拟合算法 在插值算法中,我们得到的曲线一定是要经过所有的函数点的;而用拟合所得到的曲线则不一样,拟合问题中,不需要得到的曲线一定经过给定的点。 拟合的目的是寻求一个函数曲线,使得该曲线在某种准则下与所有的数…

TCP可靠性机制

确认号/序列号/ACK TCP帮助确保数据的准确传递。为了做到这一点,其使用了一些特殊的标记和信息,其中包括序号、确认号和ACK字段。 其中,它将每个字节的数据都进行了编号. 即为序列号. 序列号:就像给书中的每一页都编了号码一样&a…

EMR电子病历系统 SaaS电子病历编辑器源码 电子病历模板编辑器

EMR(Electronic Medical Record)指的是电子病历。它是一种基于电子文档的个人医疗记录,可以包括病人的病史、诊断、治疗方案、药物处方、检查报告和护理计划等信息。EMR采用计算机化的方式来存储、管理和共享这些信息,以便医生和医…

RISC-V中国峰会 | 256核服务器高调亮相,谁与争锋?

8月23日,第三届RISC-V中国峰会(RISC-V Summit China 2023)在北京香格里拉饭店正式开幕,来自世界各地的行业精英汇聚一堂,为RISC-V生态系统建言献策,凝心聚力! 中国工程院院士倪光南、RISC-V国际…

高等数学(上)【基础学科、极限部分】

学习【高等数学(上)】6小时从0基础直追满绩!_哔哩哔哩_bilibili 高数基础 高等数学无非分为三个部分:极限、导数(微分)和积分——构成了微积分 高等数学学的就是 微积分,整体其实只是一个思想 …

K8S cluster with multi-masters on Azure VM

拓扑参考: 在 Azure VM 实例上部署 KubeSphere 基础模板 需要修改 IP 地址和 VM Image的可以在模板中修改。 {"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#","contentVersion": &q…

(GPT、GEE)遥感云大数据、洪涝灾害监测、红树林遥感制图、河道轮廓监测、洪涝灾害监测、GRACE重力卫星、源遥感影像

近年来遥感技术得到了突飞猛进的发展,航天、航空、临近空间等多遥感平台不断增加,数据的空间、时间、光谱分辨率不断提高,数据量猛增,遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

达梦数据库分区表介绍

概述 本文将对达梦数据库分区表概念、创建、维护进行介绍。 1.分区表概念 1.1 分区表使用场景 近几年,随着移动支付快速发展,银行交易系统中【移动小微支付场景】使用越来越多,系统中流水账单表数据量巨大,往往上TB。 为了提高…

Embedding 向量生成GPT数据使用相关

如果使用python3.6的版本,使用pycharm创建工程,那么默认会使用 docx包,这样运行程序会爆异常,突然想起以前请教的一个大神,想当 初,这个问题困扰了我 两天时间,在此记录一下: pytho…

Linux上实现分片压缩及解压分片zip压缩包 - 及zip、unzip命令详解

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

AI夏令营第三期 - 基于论文摘要的文本分类与关键词抽取挑战赛笔记

赛题:基于论文摘要的文本分类与关键词抽取 背景:高效的从海量医学文献中提取疾病诊断和治疗关键信息 任务:通过论文摘要判断论文是否为医学文献 样例 数据集:csv文件,字段:标题、作者、摘要、关键词 评价指…

Bootstrap的类container与类container-fluid有什么区别?

阅读本文前建议先阅读下面两篇博文: 怎么样通过Bootstrap已经编译好(压缩好)的源码去查看符合阅读习惯的源码【通过Source Map(源映射)文件实现】 在CSS中,盒模型中的padding、border、margin是什么意思? 以下是Bootstrap的类 container 的盒…

sql解决取多个截至每个月的数据

问题:需要查询1月、1-2月、1-3月… 1-12月,分区间的累计数据,在同一个sql语句里面实现。 多个分开查询效率不高,并且数据手动合并麻烦。 with t1 as ( SELECT *,CASE WHEN insutype 390 THEN 居民 ELSE 职工 END 人员类别,SUBST…

wireshark进行网络监听

一、实验目的: 1)掌握使用CCProxy配置代理服务器; 2)掌握使用wireshark抓取数据包; 3)能够对数据包进行简单的分析。 二、预备知识: 包括监听模式、代理服务器、中间人攻击等知识点&#xf…

ElementUI中的日历组件加载无效的问题

在ElementUI中提供了一个日历组件。在某些场景下还是比较有用的。只是在使用的时候会有些下坑&#xff0c;大家要注意下。   官网提供的信息比较简介。我们在引入到项目中使用的时候可以能会出现下面的错误提示。 Unknown custom element: <el-calendar> - did you …

Springboot整合WebFlux

一、使用WebFlux入门 WebFlux整合MysqlWebFlux整合ESWebFlus整合MongdbWebFlus整合Redis 1、添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId><version>2.2.1.…

MySQL下载安装配置

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Java百度提前批面试题

今天分享百度提前批的 Java 后端开发面经&#xff0c;整体上考察的点挺多的&#xff0c;主要重点考察了网络i/o、网络协议、linux系统、mysql&#xff0c;Java 问的不多&#xff0c;可能是百度的后端开发的语言不是主要以 Java 为主&#xff0c;所以重点看面试者的计算机基础是…

8个月打磨,打造出的全能工具箱,让你事半功倍!

这款工具叫即时工具&#xff0c;目前有网页端和客户端可以下载至本地离线使用&#xff0c;区别在于客户端采用原生适配性能更好&#xff0c;网页端需要上传至服务器或浏览器内部处理。 体验地址&#xff1a;点击直达 一、为什么会开发这个工具 综合性和多功能性&#xff1a;…