瑞_Redis_初识Redis(含安装教程)

文章目录

    • 1 初识Redis
      • 1.1 认识NoSQL
        • 1.1.1 结构化与非结构化
        • 1.1.2 关联和非关联
        • 1.1.3 查询方式
        • 1.1.4 事务
        • 1.1.5 总结
      • 1.2 认识Redis
        • 1.2.1 介绍
        • 1.2.2 特征
        • 1.2.3 优势
      • 1.3 安装Redis ★★★
        • 1.3.1 Linux安装Redis
          • 1.3.1.1 安装Redis依赖
        • 1.3.2 Windows安装Redis
          • 1.3.2.1 安装步骤
          • 1.3.2.2 测试

🙊 前言:本文章为瑞_系列专栏之《Redis》的基础篇的初识Redis章节。由于博主是从B站黑马程序员的《Redis》学习其相关知识,所以本系列专栏主要是针对该课程进行笔记总结和拓展,文中的部分原理及图解等也是来源于黑马提供的资料,特此注明。本文仅供大家交流、学习及研究使用,禁止用于商业用途,违者必究!

Ray-Logo

1 初识Redis


  Redis是一种键值型的NoSql数据库,这里有两个关键字:

  • 键值型
  • NoSql

  其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至json:

在这里插入图片描述

  NoSql是相对于传统关系型数据库(MySQL)而言,有很大差异的一种数据库。

瑞:NoSQL数据库的代价就是不能处理复杂业务,复杂业务还是得用传统关系型数据库。SQL和NoSQL是互为补充的关系,并不是要取代对方。编程没有对错之分,只有在不同的业务场景下,适合和更适合的区别。

1.1 认识NoSQL

在这里插入图片描述

  NoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库


SQL与NoSQL的区别主要有以下4点
1.1.1 结构化与非结构化

SQL中的S代表:结构化( Structured)

  传统关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名、字段数据类型、字段约束等等信息,插入的数据必须遵守这些约束:

在这里插入图片描述

瑞:表的结构往往不建议修改,否则在开发过程中很容易导致数据出现不可预测的意外,如锁表、数据不可用等,造成的影响非常大。

  而NoSql则对数据库格式没有严格约束,往往形式松散,自由。

瑞:没有严格约束不代表没有约束,如Redis键值型数据库中常见的数据类型有:键值型(Redis)、文档型(MongoDB)、列类型(HBase)、图格式Graph(Neo4j)等。

1.1.2 关联和非关联

关联的(Relational)

  传统数据库的表与表之间往往存在关联,例如外键,如下有用户表、商品表、订单表,在订单表中的user_iditem_id就通过外键和用户表、商品表建立起了关系

在这里插入图片描述

  而非关系型数据库不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合:

{
  id: 1,
  name: "张三",
  orders: [
    {
       id: 1,
       item: {
	      id: 10, title: "荣耀6", price: 4999
       }
    },
    {
       id: 2,
       item: {
	      id: 20, title: "小米11", price: 3999
       }
    }
  ]
}

瑞:如上Json文档嵌套的形式记录数据,此处要维护“张三”的订单与商品“荣耀”和“小米11”的关系,不得不冗余的将这两个商品保存在张三的订单文档中,不够优雅。所以还是建议用业务来维护关联关系,即只需要存储相应的主键而不是整个商品信息数据

1.1.3 查询方式

  传统关系型数据库会基于Sql语句做查询,语法有统一标准;

关系型:SQL:SELECT id,name FEOM tb_user WHERE id = 1

  而不同的非关系数据库查询语法差异极大,五花八门各种各样。

非关系型
	Redis:get user:1
	MongoDB:db.users.find({_id:1})
	elasticsearch:GET http://localhost:9200/users/1
1.1.4 事务

  传统关系型数据库能满足事务ACID的原则。

  而非关系型数据库往往不支持事务,或者不能严格保证ACID的特性,只能实现基本的一致性。

瑞:

  • A:原子性(Atomicity)不可再分割
  • C:一致性(Consistency) 要么都成功,要么都失败
  • I:持久性(lsolation)事务一旦提交则不可逆,被持久化到数据库中
  • D:隔离性(Durability)多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰
1.1.5 总结
SQLNoSQL
数据结构结构化非结构化
数据关联关联的无关联的
查询方式SQL查询非SQL
事务特性ACIDBASE
存储方式磁盘内存
拓展性垂直水平
使用场景1)数据结构固定
2)相关业务对数据安全性、一致性要求较高
1)数据结构不固定
2)对一致性、安全性要求不高
3)对性能要求
  • 存储方式

    • 关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响
    • 非关系型数据库,他们的操作更多的是依赖于内存来操作,内存的读写速度会非常快,性能非常高
  • 扩展性

    • 关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展。
    • 非关系型数据库可以将数据拆分,存储在不同机器上,可以保存海量数据,解决内存大小有限的问题。称为水平扩展。
    • 关系型数据库因为表之间存在关联关系,如果做水平扩展会给数据查询带来很多麻烦

瑞:非关系型数据库的查询效率高、天然支持分布式设计。
  所以如果数据结果不太稳定,经常变更,业务对安全性、一致性要求不是很高的情况下,就适合使用非关系型数据库。
  而如果数据结构相对固定,业务对安全性、一致性要求高,则建议使用关系型数据库。
  实际开发中,要根据业务需求灵活选择,当然两者也是可以结合使用的。

1.2 认识Redis

1.2.1 介绍

  Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器,是一个基于内存的键值型NoSQL数据库。

瑞:词典服务器,是因为Redis是键值型的非关系型数据库,根据key找value,就类似于词典的用法。

  作者:Antirez

  Redis的官方网站地址:https://redis.io/

1.2.2 特征
  • 键值(key-value)型,value支持多种不同数据结构,功能丰富
  • 单线程,每个命令具备原子性
  • 低延迟,速度快(基于内存、IO多路复用、良好的编码)
  • 支持数据持久化
  • 支持主从集群、分片集群
  • 支持多语言客户端

瑞:Redis在6以上的版本中的多线程,指的是对网络请求处理是多线程处理,而核心命令的执行仍然是单线程的。虽然Redis是单线程的,但是效率很高,毕竟Redis是基于内存而MySQL是基于磁盘,这个效率差异实在太大了

1.2.3 优势
  • 性能极高:Redis能读的速度是110000次/s,写的速度是81000次/s。
  • 丰富的数据类型:Redis支持二进制案例的Strings、Lists、 Hashes、Sets及Ordered Sets数据类型操作。
  • 原子性:Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性-:Redis还支持 publish/subscribe,通知, key过期等等特性。

1.3 安装Redis ★★★

1.3.1 Linux安装Redis

  大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包。因此本系列是基于Linux系统安装Redis

瑞:Redis的原作者根本就没有编写 Windows 版的 Redis ,所以学习的时候还是要以官方版的为准

  Linux版本为CentOS 7

瑞:关于 VMware 虚拟机安装 Linux 的教程可以参考:[明天出]

1.3.1.1 安装Redis依赖

  Redis是基于C语言编写的,因此首先需要安装Redis所需要的gcc依赖:

yum install -y gcc tcl

(由于Linux教程未完成,等明天出完后继续更新Linux版本的安装)

1.3.2 Windows安装Redis
1.3.2.1 安装步骤

  1️⃣ 资源准备。点击链接,直接下载最新版本(注意选择.msi格式的安装版本)

瑞:Windows 环境下的 Redis 的 github 链接:https://github.com/MicrosoftArchive/redis/releases
注意:Redis 原作者并没有编写 Windows 版本的 Redis ,目前开源的 Windows 环境下的 Redis 没有32位

在这里插入图片描述

  由于该链接是 github 外网链接,如果加载不出来的小伙伴,可以用博主提供的百度网盘链接(版本:Redis-x64-3.0.504.msi)

	链接:https://pan.baidu.com/s/1e29fjmLn6ku_jcF-SHxUMw?pwd=foqz 
	提取码:foqz

在这里插入图片描述

  2️⃣ 双击运行.msi的安装包,一直next,直到下面界面,勾选上再next

在这里插入图片描述

  3️⃣ 到这一步选择端口6379,然后next(不用担心,端口号后续可通过配置文件修改)

在这里插入图片描述

  4️⃣ 选择最大缓存容量,点击next(后续可通过配置文件修改)

在这里插入图片描述
  5️⃣ 点击finish,配置结束。接下来点击install进行安装

  6️⃣ 安装完毕后,进入redis安装目录找到配置文件,注意配置文件是redis.windows-service.conf,不是❌redis.windows.conf❌,后者是以非系统服务方式启动程序使用的配置文件(注意区分)

在这里插入图片描述

  7️⃣ 在配置文件(redis.windows-service.conf)中搜索requirepass foobared,在其后面追加一行,参考输入requirepass 123456。

瑞:本步骤是设置访问Redis时所需的密码,一般测试情况下可以不用设定密码。不过,即使是作为本地访问,也建议设定一个密码。此处设置123456为仅用于步骤演示,具体密码请自定义设置(后续仍然可修改),记得保存文件后再退出。

在这里插入图片描述

  8️⃣ 使用任务管理器找到Redis名称的服务,查看启动情况。如未启动,则手动启动。正常情况下,服务应该正常启动并运行了,但是因为前面修改过配置文件,需要重启服务,切记,否则配置不生效

在这里插入图片描述


安装结束
1.3.2.2 测试

  1️⃣ 打开cmd命令窗口,输入redis-cli注意中间没有空格等其它字符,回车执行。

  redis-cli是客户端程序,如下图正常提示(显示配置的端口号6379),则表示服务已经启动。

在这里插入图片描述

  2️⃣ 使用服务前需要先通过密码验证。输入auth 123456并回车(注意123456是之前设定的密码)。返回提示OK表示验证通过。后续可以自行验证set和get等命令,如上图,则说明安装成功。

C:\Users\用户名>redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set mytest "ray"
OK
127.0.0.1:6379> get mytest
"ray"
127.0.0.1:6379>



  Windows环境下的Redis安装参考博客:https://blog.csdn.net/qq_52253798/article/details/122204459




本文是博主的粗浅理解,可能存在一些错误或不完善之处,如有遗漏或错误欢迎各位补充,谢谢

  如果觉得这篇文章对您有所帮助的话,请动动小手点波关注💗,你的点赞👍收藏⭐️转发🔗评论📝都是对博主最好的支持~


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

挖掘机生产装配线无线通讯应用

一、应用背景 山东某挖掘机机械有限公司主要产品有装载机、挖掘机、道路机械及核心关键零部件等系列工程机械产品。为加速新旧动能转换,全新挖掘机整机装配线配合劳动组合的调整,提高装配水平和生产效率;可集中、合理地使用工装、专用工具&a…

【深度学习】Pytorch教程(八):PyTorch数据结构:2、张量的数学运算(6):高维张量:乘法、卷积(conv2d~四维张量;conv3d~五维张量)

文章目录 一、前言二、实验环境三、PyTorch数据结构1、Tensor(张量)1. 维度(Dimensions)2. 数据类型(Data Types)3. GPU加速(GPU Acceleration) 2、张量的数学运算1. 向量运算2. 矩阵…

【rust】8、连接数据库:sqlx

sqlx 是 rust 的数据库访问工具, 本身并不是 orm,但常见的 orm 都是基于它实现的。其有如下特点: 支持异步,适合高并发编译时检查:cargo build 时检查执行 sql,校验响应值支持多数据库:mysql、…

Leo赠书活动-17期 《基础软件之路:企业级实践及开源之路》

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 赠书活动专栏 ✨特色专栏:…

学习笔记-Git

Git 问题一描述解决方法注意事项 问题一 描述 在commit和push的时候因为网络太慢了中途强行关闭了进程,而push的内容因为文件过大导致无法正常push 按照原本的流程在push的时候会提示失败,并且需要在解决了大文件之后重新push 而因为中途中断了&#x…

Autosar-Mcal配置详解-MCU

3.6.1创建、配置RAM 1)创建RAM配置 2)配置RAM 以F1KM R7F7016533ABG为例,它的local RAM有512K, global RAM 192K,Retention RAM 64K. Local RAM: local RAM就是程序平常使用的RAM,在DeepStop模式下内容会丢失。 Global RAM:主要用于DMA的源地址和目的地址使用,在Dee…

win电脑截屏的图片在哪里?电脑截屏的图片删了怎么找回来

在使用Windows操作系统的电脑时,截屏功能是我们经常使用的工具之一。然而,有时我们可能会遇到找不到截屏图片或误删截屏图片的情况。那么,Win电脑截屏的图片究竟存放在哪里?如果误删了截屏图片,我们又该如何找回呢&…

使用Windbg动态调试目标程序去分析异常的两实战案例分享

目录 1、前言 2、案例1:程序退出时弹出报错提示框 2.1、问题说明 2.2、到系统应用程序日志中看系统有没有自动生成dump文件 2.3、将Windbg附加到目标程序上进行动态调试 3、案例2:程序在运行过程中弹出ASSERT断言提示框 3.1、问题说明 3.2、将Wi…

【Python笔记-设计模式】组合模式

一、说明 组合模式是一种结构型设计模式, 你可以使用它将对象组合成树状结构, 并且能像使用独立对象一样使用它们。 (一) 解决问题 处理树形结构:可以很好地处理树形结构的数据,使得用户可以统一对待单个对象和对象组合。统一接…

Java零基础 - 逻辑运算符

哈喽,各位小伙伴们,你们好呀,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后…

第13讲实现自定义logout处理

默认logout请求实现是有状态的,返回到login请求页面;我们现在是前后端分离处理,所以需要自定义实现logout 新建JwtLogoutSuccessHandler /*** 自定义Logout处理* author java1234_小锋 (公众号:java1234)…

Python算法题集_岛屿数量

Python算法题集_岛屿数量 题200:岛屿数量1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【双层循环递归】2) 改进版一【双层循环迭代】3) 改进版二【双层循环迭代高速双向队列】4) 改进版三【双层循环并查集】 4. 最优算法5. 相关资…

五、分类算法 总结

代码: from sklearn.datasets import load_iris, fetch_20newsgroups from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.naive_bayes import MultinomialNB from s…

基于JAVA的班级考勤管理系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统基础支持模块2.2 班级学生教师支持模块2.3 考勤签到管理2.4 学生请假管理 三、系统设计3.1 功能设计3.1.1 系统基础支持模块3.1.2 班级学生教师档案模块3.1.3 考勤签到管理模块3.1.4 学生请假管理模块 3.2 数据库设…

Kubernetes二进制搭建

目录 1.操作系统初始化配置(所有节点同此操作) 2.部署etcd集群 etcd概述 准备签发证书环境 在master01节点上操作(192.168.88.22) 在两个node节点上操作 总结: 3.部署docker引擎 4.部署Master组件 总结&…

学习大数据所需的java基础(5)

文章目录 集合框架Collection接口迭代器迭代器基本使用迭代器底层原理并发修改异常 数据结构栈队列数组链表 List接口底层源码分析 LinkList集合LinkedList底层成员解释说明LinkedList中get方法的源码分析LinkedList中add方法的源码分析 增强for增强for的介绍以及基本使用发2.使…

五种多目标优化算法(MOJS、MOGWO、NSWOA、MOPSO、NSGA2)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MOJS 1.2MOGWO 1.3NSWOA 1.4MOPSO 1.5NSGA2 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数(zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3)&#xff0…

【虚拟仿真】Unity3D中实现3DUI,并且实现Button、InputField、Toggle等事件绑定

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 最近在项目中需要用到3DUI的展示,之前一般会用TextMeshPro进行展示: 但是,后面又需要添加按钮、Toggle等…

《nvm 安装》nodejs 版本管理工具

一.前言 如果先于 nvm 安装了 node,一定要先卸载! 两种卸载方式: 方式一 控制面板 -> 程序和功能 -> nodejs 删除 方式二 下载的 node 安装包有卸载选项 二. 安装 nvm 下载地址 中找到对应的安装包,我本机使用 window…

Autosar-Mcal配置详解-GPT

3.3.1添加GPT模块 方法与添加Dio相似,可参加Dio模块添加方法。 3.3.2 创建、配置GPT通道 1)根据需求创建GPT通道(即创建几个定时器) 本例中创建了3个定时器通道:1ms,100us,OsTimer。 2)配置GPT通道 配置T…