瑞_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:1MongoDB: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




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

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


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

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

相关文章

抛弃chatgpt,使用微软的Cursor提升coding效率

Whats Cursor? Cursor编辑器是一个基于GPT-4的代码编辑器,它可以根据用户的自然语言指令或者正在编辑的代码上下文为用户提供代码建议,支持多种编程语言,如Python、Java、C/C#、go等。Cursor编辑器还可以帮助用户重构、理解和优化代码&…

Code Control Process

代码提交流程(Code Control Process) VSS,早前定义的版本控制,没有谁对不对,但是要根本解决冲突,特别人多的时候,50个人的时候,处理冲突时非常的麻烦的,改半天还改错了&…

vulfocus靶场搭建

vulfocus靶场搭建 什么是vulfocus搭建教程靶场配置场景靶场编排靶场优化 什么是vulfocus Vulfocus 是一个漏洞集成平台,将漏洞环境 docker 镜像,放入即可使用,开箱即用,我们可以通过搭建该靶场,简单方便地复现一些框架…

Java面试题之分布式/微服务篇

经济依旧不景气啊,如此大环境下Java还是这么卷,又是一年一次的金三银四。 兄弟们,你准备好了吗?冲冲冲!欧里给! 分布式/微服务相关面试题解 题一:CAP理论,BASE理论题二:…

企业电子招投标系统源码之电子招投标系统建设的重点和未来趋势

功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…

如何使用Docker部署MongoDB并结合内网穿透实现远程访问本地数据库

文章目录 前言1. 安装Docker2. 使用Docker拉取MongoDB镜像3. 创建并启动MongoDB容器4. 本地连接测试5. 公网远程访问本地MongoDB容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 …

SICTF Round#3 の WP

Misc 签到 SICTF{1f4ce05a-0fed-42dc-9510-6e76dff8ff53} Crypto [签到]Vigenere 附件内容: Gn taj xirly gf Fxgjuakd, oe igywnd mt tegbs mnrxxlrivywd sngearbsw wakksre. Bs kpimj gf tank, it bx gur bslenmngn th jfdetagur mt ceei yze Ugnled Lystel t…

mysql 2-22

变量 查看系统变量 修改 用户变量 赋值 定义处理程序 流程控制 IF CASE LOOP语句 WHILE循环 REPEAT leave ITERATE 游标 使用步骤 全局系统变量持久化 触发器 查看触发器 优点 MYSQL8的新特性 移除的旧特性 窗口函数 公用表表达式 JDBC 存储引擎 MYISAM存储引擎 InnoDB存储引擎…

跟着pink老师前端入门教程(JavaScript)-day05

六、语句 (一)表达式和语句 1、表达式 表达式是可以被求值的代码,JavaScript 引擎会将其计算出一个结果。 2、语句 语句是一段可以执行的代码。 比如: prompt() 可以弹出一个输入框,还有 if语句 for 循环语句等…

npm run serve启动报错npm ERR! Missing script: “serve“

启动项目的时候用npm run serve发现报了以下的错误 解决方法: 1.一般情况下,这个问题是因为package.json文件里面确实没有 这里没有可能因为你的脚手架版本比较低,如果不想换,可以用 这里面有的 npm run dev去启动也是可以的 n…

ubuntu20.04安装实时内核补丁PREEMPT_RT

参考: Ubuntu 18.04安装 RT-PREEMPT 实时内核及补丁【过程记录】_ubuntu18.04 preempt rt linux 5.6.19-CSDN博客 https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/blob/master/ur_robot_driver/doc/real_time.md当前内核:5.15.0-94-ge…

前端基础自学整理|DOM树

DOM,文档对象模型(Document Object Model),简单的说,DOM是一种理念,一种思想,一个与系统平台和编程语言无关的接口,一种方法, 使 Web开发人员可以访问HTML元素!不是具体方…

LLM之RAG实战(二十七)| 如何评估RAG系统

有没有想过今天的一些应用程序是如何看起来几乎神奇地智能的?这种魔力很大一部分来自于一种叫做RAG和LLM的东西。把RAG(Retrieval Augmented Generation)想象成人工智能世界里聪明的书呆子,它会挖掘大量信息,准确地找到…

GitLab私有Git

GitLab私有Git 1 GitLab简介 GitLab是整个DevOps生命周期的第一个单一应用程序。只有GitLab才能启用Concurrent DevOps,从组件链的约束中解锁组织。GitLab提供无与伦比的可见性,更高的效率和全面的治理。这使得软件生命周期加快了200%&…

Flutter插件开发指南01: 通道Channel的编写与实现

Flutter插件开发指南01: 通道Channel的编写与实现 视频 https://www.bilibili.com/video/BV1ih4y1E7E3/ 前言 本文将会通过一个加法计算,来实现 Channel 的双向通讯,让大家有个一个体会。 Flutter插件 Flutter插件是Flutter应用程序与原生平台之间的桥…

转转交易猫自带客服多模板全开源完整定制版源码

源码获取方式 搜一搜:万能工具箱合集 点击资源库直接进去获取源码即可 如果没看到就是待更新,会陆续更新上 或 源码软件库 软件介绍 商品发布;请在后台商品添加成功后,再点击该商品管理,可重新编辑当前商品的所有信息…

网络安全“降本增笑”的三大帮手

在网络安全这个快速变化和危机四伏的领域中,通过使用正确的工具和方法,我们可以在工作中取得更高的效率,并降低相关成本。 雷池社区版 雷池社区版—开源Web应用防火墙。这款产品凭借强大的规则引擎,它允许用户自定义安全策略&…

【C++精简版回顾】5.字符串

1.字符串的四种初始化方式 string str "ilove"; string str1("ilove"); string str2(str1); string str3 str1; 2.针对字符串的一些函数 &#xff08;1&#xff09;字符串长度 cout<<str.length()<<endl;&#xff08;2&#xff09;查找字…

【海贼王的数据航海:利用数据结构成为数据海洋的霸主】时间复杂度 | 空间复杂度

目录 1 -> 算法效率 1.1 -> 如何衡量一个算法的好坏&#xff1f; 1.2 -> 算法的复杂度 2 -> 时间复杂度 2.1 -> 时间复杂度的概念 2.2 -> 大O的渐进表示法 2.3 -> 常见时间复杂度计算 3 -> 空间复杂度 4 -> 常见复杂度对比 1 -> 算法效…

【regex】正则表达式

集合 [0-9.] [0-9.\-] 例子 正则表达式&#xff0c;按照规则写&#xff0c;写的时候应该不算困难&#xff0c;但是可读性差 不同语言中regex会有微小的差异 vim 需要转义&#xff0c; perl/python中不需要转义 锚位 \b am\b i am 命名 / 命名捕获组 ( 捕获组&#xff08;…