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

什么是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
    

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

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

相关文章

qiankun微前端:qiankun+vite+vue3+ts(未完待续..)

目录 什么是微前端 目前现有的微前端 好处 使用 子应用的页面在主应用里显示 什么是微前端 微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。 我的理解就是将一个大型的前端应用拆分成多个模块,每个微前端模块可以由…

大淘客api实现多多进宝的商品查询PHP版

大家好,我是网创有方,今天教大家如何使用大淘客的api实现拼多多商品详情信息查询。这里用到的多多进宝,如果没有多多进宝的,先去多多进宝注册个账号吧! 第一步:进入大淘客官方创建应用,并且下载…

AI降重新突破:chatgpt降重工具在学术论文中的应用与效果

论文降重一直是困扰各界毕业生的“拦路虎”,还不容易熬过修改的苦,又要迎来降重的痛。 其实想要给论文降重达标,我有一些独家秘诀。话不多说直接上干货! 1、同义词改写(针对整段整句重复) 这是最靠谱也是…

.NET C# 使用OpenCV实现人脸识别

.NET C# 使用OpenCV实现模型训练、人脸识别 码图~~~ 1 引入依赖 OpenCvSHarp4 - 4.10.0.20240616 OpenCvSHarp4.runtime.win - 4.10.0.20240616 2 人脸数据存储结构 runtime directory | face | {id}_{name} | *.jpg id - 不可重复 name - 人名 *.jpg - 人脸照片3 Demo 3.…

stable-diffusion-webui-colab搭建SadTalker由图生成视频人

在这里选择一个stable-diffusion-webui-colab ​​​​​​​​​GitHub - camenduru/stable-diffusion-webui-colab: stable diffusion webui colab 这里我选择是: https://colab.research.google.com/github/camenduru/stable-diffusion-webui-colab/blob/main…

Webpack: 深入理解图像加载原理与最佳实践

概述 图形图像资源是当代 Web 应用的最常用、实惠的内容、装饰元素之一,但在 Webpack 出现之前对图像资源的处理复杂度特别高,需要借助一系列工具(甚至 Photoshop)完成压缩、雪碧图、hash、部署等操作。 而在 Webpack 中,图像以及其它多媒体…

JAVA课程复习

简答题65分(理解)❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀看本章小结 读程序写结果45分 填空102分(lambda) 编程310分(20~30行) ❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀-❀ 1~13章,11、13章重…

小时候的子弹击中了现在的我-hive进阶:案例解析(第18天)

系列文章目录 一、Hive表操作 二、数据导入和导出 三、分区表 四、官方文档(了解) 五、分桶表(熟悉) 六、复杂类型(熟悉) 七、Hive乱码解决(操作。可以不做,不影响) 八、…

Lr、LrC软件下载安装 Adobe Lightroom专业摄影后期处理软件安装包分享

Adobe Lightroom它不仅为摄影师们提供了一个强大的照片管理平台,更以其出色的后期处理功能,成为了摄影爱好者们争相追捧的必备工具。 在这款软件中,摄影师们可以轻松地管理自己的照片库,无论是按拍摄日期、主题还是其他自定义标签…

【JVM基础篇】垃圾回收

文章目录 垃圾回收常见内存管理方式手动回收:C内存管理自动回收(GC):Java内存管理自动、手动回收优缺点 应用场景垃圾回收器需要对哪些部分内存进行回收?不需要垃圾回收器回收需要垃圾回收器回收 方法区的回收代码测试手动调用垃圾回收方法Sy…

Python | Leetcode Python题解之第206题反转链表

题目: 题解: # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def reverseList(self, head: Optional[ListNode]) -> Optio…

QT事件处理及实例(鼠标事件、键盘事件、事件过滤)

这篇文章通过鼠标事件、键盘事件和事件过滤的三个实例介绍事件处理的实现。 鼠标事件及实例 鼠标事件包括鼠标的移动、按下、松开、单击和双击等。 创建一个MouseEvent项目,通过项目介绍如何获得和处理鼠标事件。程序效果如下图所示。 界面布局代码如下&#xff…

后端之路第三站(Mybatis)——入门配置

一、Mybatis是啥? 就是一个用java来操控数据库的框架语言 之前学的datagrip或者navicat这些软件里我们操作数据库,原理是我们编写完的操作语句发送到服务器传送到数据库系统,然后数据库执行完之后再发送给服务器返回给datagrip或者navicat显…

独立开发者系列(13)——示例理解面向对象与过程

专业术语晦涩难懂,特别是当你没有写过稍微大点的系统的时候,你要理解这里面的区别很难。 从最简单的早期我们学习开始,我们除了练习hello world掌握了入门函数之后,基本都再练习算法。比如水仙花数的获取,冒泡排序&…

phpMyAdmin | mysqli::real_connect(): (HY000/2002): No such file or directory

法一:第一次安装宝塔 第一次安装宝塔mysql服务是默认关闭的,需要手动打开,打开服务再次进入phpMyAdmin发现可以进入了 法二:第一种方法没解决用这种 出现mysqli::real_connect(): (HY000/2002): No such file or directory错误通…

Java | Leetcode Java题解之第206题反转链表

题目: 题解: class Solution {public ListNode reverseList(ListNode head) {if (head null || head.next null) {return head;}ListNode newHead reverseList(head.next);head.next.next head;head.next null;return newHead;} }

ROS2自定义接口Python实现机器人移动

1.创建机器人节点接口 cd chapt3_ws/ ros2 pkg create example_interfaces_rclpy --build-type ament_python --dependencies rclpy example_ros2_interfaces --destination-directory src --node-name example_interfaces_robot_02 --maintainer-name "Joe Chen" …

20240630 每日AI必读资讯

📚全美TOP 5机器学习博士发帖吐槽:实验室H100数量为0! - 普林斯顿、哈佛「GPU豪门」,手上的H100至少三四百块,然而绝大多数ML博士一块H100都用不上 - 年轻的研究者们纷纷自曝自己所在学校或公司的GPU情况&#xff1a…

vue开发网站--关于window.print()调取打印

1.vue点击按钮调取打印 点击按钮&#xff1a; 调取打印该页面&#xff1a; <div click"clickDown()">下载</div>methods: {//下载-调取打印clickDown() {window.print()}, }<style>/* 点击打印的样式 */media print {.clickDown {display: no…

【测试】软件测试规程(word原件)

软件测试规程的作用在于确保软件测试活动的系统性、规范性和一致性。它明确了测试的目标、范围、方法、流程以及所需资源&#xff0c;为测试人员提供了明确的指导和操作规范。通过遵循测试规程&#xff0c;可以提高测试效率&#xff0c;减少测试遗漏和错误&#xff0c;保证软件…