黑马点评DAY1|Redis入门、Redis安装

news2024/12/23 13:56:18

什么是Redis?

redis是一种键值型数据库,内部所存的数据都是键值对的形式,例如,我们可以把一个用户数据存储为如下格式:

id$1600
name张三
age21

但是这样的存储方式,数据会显得非常松散,因为这本质上是一个用户的信息,所以我们一般使用JSON字符串去存储用户的各个字段:

1001{
“id” :1001
“name”:“张三”
“age”:21
}

当然这里的值也可以是list、hash表等。

像这样没有表的数据库被称为Nosql数据库

NoSQL数据库

SQL(关系型数据库)和NoSQL(非关系型数据库)的差异:

  • 结构化:在sql中所有的数据格式都是严格按照表结构的限制条件的。并且表的结构一般不修改,因为当数据巨量的时候修改表会带来问题。

    相对地,NoSQL数据库的约束 较少,就比如JSON格式的数据库。

  • 关系型:SQL中表和表之间通过外键建立关系。在这里插入图片描述
    NoSQL中的关系通过JSON来维护,比如要表示一个用户下单的数据可以直接可以用一个JSON文档嵌套的形式来表示,在JSON中,{}表示一个对象,[]表示一个数组。:

在这里插入图片描述

  • SQL查询
    比如,SQL想要查询id为1的用户,可以这样写:
select * from tb_user where id=1;

格式固定,语法固定,所以只要是关系型数据库,都可以用相同的语句去查询。
NoSQL的查询是非SQL,语法不固定,Redis中对应的语法是:

get user:1
  • ACID : 关系型数据库支持事务的ACID原子性、持久性、隔离性、一致性)的特性,NoSQL则无法满足。如果对于事务要求较高,建议使用NoSQL数据库开发。
  • SQL数据大都存储在磁盘上,NoSQL数据大都存储在内存中,所以查询性能较高

两种数据库分别适合的场景

SQL:

  • 业务结构相对固定
  • 业务对数据安全性、一致性要求较高

NoSQL:

  • 数据结构不固定
  • 对一致性安全性要求不高
  • 对性能要求较高

认识Redis

全程问Remote Dictionary Server(远程词典服务器),因为该数据库是根据key去寻找value,类似于词典。
是一个基于内存的NoSQL数据库。
特征:

  • 键值型,支持不同数据结构
  • 单线程,每个命令具备原子性
  • 低延迟,速度快(原因:基于内存、IO多路复用、良好的编码
  • 支持数据持久化:定时保存数据到磁盘,确保断电的时候数据不丢失
  • 支持主从集群、分片集群
    主从集群:多台服务器中有一个主节点只负责写数据,其余服务器读数据,这样读写分离可以提高性能。并且如果主节点损坏可以选出一个新的主节点,并且从节点也可以备份主节点数据,以防止数据丢失。
    分片集群:一份数据分段存储到多台服务器上,可以处理的数据的上限提高了,并且每一个节点的数据可以扩展,提高性能。
  • 支持多语言客户端

安装Redis

  • 打开虚拟机CentOS并用FinalShell链接虚拟机
  • 执行 yum install -y gcc tcl 命令安装依赖,该界面说明安装完毕
 yum install -y gcc tcl 

在这里插入图片描述

  • 执行cd /usr/local/src/进入到目录,并将资料中的redis-6.2.6拖拽到这个虚拟机该目录下。
cd /usr/local/src/

在这里插入图片描述

  • 执行tar -zxvf redis-6.2.6.tar.gz解压该文件
tar -zxvf redis-6.2.6.tar.gz
  • cd redis-6.2.6进入redis-6.2.6目录,执行make && make install安装redis,如果没有报错就说明安装成功了。
    在这里插入图片描述
  • 我们可以执行cd /usr/local/bin/进入到redis的bin文件查看,发现一些重要的文件
cd /usr/local/bin/

在这里插入图片描述- 我们可以在任何目录下运行redis,为了验证这个想法,先 cd - 后退到之前的redis安装目录,执行redis-server启动redis,出现以下redis的日志界面,redis启动了!

redis-server

在这里插入图片描述

  • 注意:这样的启动方式叫作前台启动,如果想建立连接必须重新打开一个窗口,重新连接。crtl+C就停止redis。所以这种启动方式不友好。
  • 想要后台启动redis就需要修改redis的配置文件并制定配置文件启动。在这之前我们先备份一份原始配置文件,以免修改错了,执行:
cp redis.conf redis.conf.bck
  • 展示配置文件内容
vi redis.config
  • 修改的时候有下面几点 需要注意
    注意在修改之前先按i进入到insert模式
    esc可以推出修改模式,/ + 需要查询的关键词可以查询文件内容,n可以寻找关键词下一个位置
    在非insert模式下输入“:wq”就可以保存并退出
# 默认的监听地址为:127.0.0.1,只能在本地访问,监听的地址在开发阶段改为0.0.0.0,这样就可以在任意IP访问redis
bind 0.0.0.0

# 守护线程改为yes,即可在后台运行
daemonize yes

# 设置密码,拒绝恶意访问!
requirepass 123321

其他可选配置

# 监听的端口
port 6379

# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .

# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1

# 设置redis能够使用的最大内存
maxmemory 512mb

# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"
  • 完成配置,启动redis,这次启动之后没有任何的日志输出,说明redis已经变成了后台运行
redis-server redis.conf
  • 验证redis是否在后台运行了
ps -ef | grep redis

这里发现 113989 进程在运行
在这里插入图片描述
当然也可以杀死进程

kill -9 113989

再执行ps -ef | grep redis发现进程消失了
在这里插入图片描述

  • 设置开机自启

    • 首先,新建一个系统服务文件:
    vi /etc/systemd/system/redis.service
    
    • 内容如下(这里将如下内容粘贴之后需要esc再:wq保存一下):
    [Unit]
    Description=redis-server
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
    • 重新加载服务
    systemctl daemon-reload
    
    • 现在,我们可以用下面这组命令来操作redis了:
    # 启动
    systemctl start redis
    # 停止
    systemctl stop redis
    # 重启
    systemctl restart redis
    # 查看状态
    systemctl status redis
    

    在这里插入图片描述

    • 执行下面的命令,可以让redis开机自启:
    systemctl enable redis
    

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

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

相关文章

C# 计算椭圆上任意一点坐标

已知圆心坐标 (x0,y0),横轴 A(长半轴),竖轴 B(短半轴),角度 a,则圆边上点(x,y)的坐标为: 方法一 …

回溯 | Java | LeetCode 39, 40, 131 做题总结

Java Arrays.sort(数组) //排序 不讲究顺序的解答,都可以考虑一下排序是否可行。 39. 组合总和 错误解答 在写的时候需要注意,sum - candidates[i];很重要,也是回溯的一部分。 解答重复了。是因为回溯的for循环理解错了。 class Solutio…

【大模型能力分水岭数学考试,文心一言超gpt4o排名第一】

文末有福利! 2024年全国高考成绩陆续放榜,各位考生的成绩怎么样?在本次考试中还有几位特殊的考生——国内外知名的9个AI大模型也“参与”了本次高考,它们的成绩可谓也是“几家欢喜,几家愁”。 以河北省录取分数线&…

深圳数据中心机房搬迁准备

在互联网高度发达的今天,作为业务系统基础设施承载者,数据中心也得到了长足的发展和进步。随着信息系统规模逐渐扩大,应用功能的增多,过去建造的数据中心的面积、配套设施的各个方面都不能满足需求了。大多数使用者需要搬迁到新的…

Android 11.0 SettingsProvider 源码分析

文章目录 一、SettingsProvider 的概述二、SettingsProvider 的启动流程三、对 SettingsProvider 进行操作方法四、客制化示例 一、SettingsProvider 的概述 SettingsProvider 是一个为 Android 系统设置提供数据共享的 Provider,它包含全局、安全和系统级别的用户…

Linux屏幕驱动开发调试笔记

引言 首先了解下什么是MIPI-DSI: MIPI-DSI是一种应用于显示技术的串行接口,兼容DPI(显示像素接口,Display Pixel Interface)、DBI(显示总线接口,Display Bus Interface)和DCS(显示命令集,Display Command Set)&#…

Tech Talk:智能电视eMMC存储的五问五答

智能电视作为搭载操作系统的综合影音载体,以稳步扩大的市场规模走入越来越多的家庭,成为人们生活娱乐的重要组成部分。存储部件是智能电视不可或缺的组成部分,用于保存操作系统、应用程序、多媒体文件和用户数据等信息。智能电视使用eMMC作为…

前端FCP指标优化

优化前 第三方依赖按需引入之后,打包的总体积减小到初始值的55%,但是依然存在很大的js文件,需要继续优化 chunk-vendors.js进行分包之后 截图 compression-webpack-plugin压缩之后 截图

【MySQL备份】Percona XtraBackup总结篇

目录 1.前言 2.问题总结 2.1.为什么在恢复备份前需要准备备份 2.1.1. 保证数据一致性 2.1.2. 完成崩溃恢复过程 2.1.3. 解决非锁定备份的特殊需求 2.1.4. 支持增量和差异备份 2.1.5. 优化恢复性能 2.2.Percona XtraBackup的工作原理 3.注意事项 1.前言 在历经了详尽…

大语言模型系列-Transformer(二)

Transformer 模型的入门可以从以下几个方面开始: 1. 理解基本概念 序列到序列(Sequence-to-Sequence)任务:Transformer 模型主要用于这类任务,如机器翻译、文本摘要等。注意力机制(Attention Mechanism&a…

使用dot来画流程图

Dot是一种图形描述语言,属于Graphviz软件的一部分。Graphviz是一个用于可视化图形(图表、网络图等)的开源工具集。使用Dot语言,你可以创建并描述节点和边,从而生成图形。以下是如何使用Dot语言画图的基本步骤&#xff…

Elasticsearch实战教程: 如何在海量级数据中进行快速搜索

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 Elasticsearch(简称ES)是一个基于Apache Lucene™的开源搜索引擎,无论在开源还是专有领…

matlab仿真 通信信号和系统分析(下)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第三章内容,有兴趣的读者请阅读原书) 一、离散傅里叶变换 clear all n0:30;%信号的时间范围 xsin(0.2*n).*exp(-0.1*n); k0:30;%频率范围 N31; Wnkexp(-j*2*pi/N).…

firewalld(6)自定义services、ipset

简介 在前面的文章中我们已经介绍了zone、rich rule 、--direct等功能和基本配置。在前面文章中,我们提到过firewalld内置了很多服务,可以通过firewall-cmd --get-services来查看服务,也可以通过配置文件查看这些服务/var/lib/firewalld/ser…

短视频电商源码的优势及软件架构解析

短视频电商源码是目前电商行业中非常火热的一个新兴领域,它通过短视频内容和电商商品的结合,为用户提供了一种新的购物体验。下面将介绍短视频电商源码的优势以及软件架构。 首先,短视频电商源码具有以下几个优势: 1、创新的购物体…

WGAN(Wassertein GAN)

WGAN E x ∼ P g [ log ⁡ ( 1 − D ( x ) ) ] E x ∼ P g [ − log ⁡ D ( x ) ] \begin{aligned} & \mathbb{E}_{x \sim P_g}[\log (1-D(x))] \\ & \mathbb{E}_{x \sim P_g}[-\log D(x)] \end{aligned} ​Ex∼Pg​​[log(1−D(x))]Ex∼Pg​​[−logD(x)]​ 原始 GAN …

项目范围管理(信息系统项目管理师)

收集需求的输出是需求文件、需求跟踪矩阵定义范围是制定项目和产品详细描述的过程。本过程的主要作用是描述产品、服务或成果的边界和验收标准。本过程需要在整个项目期间多次反复开展项目范围说明书:是对项目范围、主要可交付成果、假设条件和制约因素的描述。明确…

思维导图插件--jsMind的使用

vue引入jsmind(右键菜单)_jsmind.menu.js-CSDN博客 第一版 vue-JsMind思维导图实现(包含鼠标右键自定义菜单)_jsmind 右键菜单-CSDN博客 // 新增节点addNode() {console.log(this.get_selected_nodeid());this.get_selected_…

Jenkins 创建流水线任务

Jenkins是一个流行的持续集成(Continuous Integration,CI)工具。 Jenkins 创建任务 选择“流水线”类型,该类型的优点是定制化程度非常高 (可选)添加“参数化构建” 配置仓库选项(ssh连接、分支)和凭据…

Element-UI - el-table中自定义图片悬浮弹框 - 位置优化

该篇为前一篇“Element-UI - 解决el-table中图片悬浮被遮挡问题”的优化升级部分,解决当图片位于页面底部时,显示不全问题优化。 Vue.directive钩子函数已在上一篇中详细介绍,不清楚的朋友可以翻看上一篇, “Element-UI - 解决el-…