linux第三课(linux中安装nginx与redis及SpringBoot集成redis)

news2024/11/15 10:03:49

目录

一.nginx引入

二.关于nginx

1.什么是nginx

 2.nginx的特点

3.在nginx中安装nginx

三.关于redis 

1.背景引入

2.什么是redis 

3.redis的特点 

4.在linux下的docker中安装redis

 四.redis中的数据结构

(1)String(字符串)

(2)Hash

(3)list(列表)

(5)zset(sorted set:有序集合)

(6)设置失效时间

 五.StringBoot集成redis

(1)概述

(2)spring-data-redis 针对 jedis 提供了如下功能:

(3)在springboot中搭建redes


一.nginx引入

由于我们的前端项目是由前端提供的node环境下运行的,别人要运行我们的前端程序电脑上必须要安装hbulid和node环境为了方便其他人访问我们的前端程序,因此为前端提供了nginx运行环境,将前端项目部署到此环境中,运行java的tomcat也可以部署前端项目但是tomcat主要是部署后端java程序的,使用起来不便,所以基本将前端项目部署到nginx中.

二.关于nginx

1.什么是nginx

Nginx 是一款是由俄罗斯的程序设计师所开发高性能的 Web 服务器 ( 只能运行前端项目 , 不能运行 java项目 )

 2.nginx的特点

(1)占用内存少,节省空间

(2)并发能力强,nginx可以同时部署多个前端项目

(3)性能优越,能同时支持5万个用户连接

3.在nginx中安装nginx

(1)创建数据卷

mkdir -p /opt/nginx/html

(2)安装nginx

docker run -d -p 80:80 \
--name nginx \
--restart=always \
--privileged=true \
-v /opt/nginx/html:/usr/share/nginx/html \
nginx:1.24

(3)测试访问nginx

自己的ip:80(ip是虚拟机的ip) 

三.关于redis 

1.背景引入

由于我们在如双十一等活动节日我们的数据库一瞬间要被大量的用户访问,所以数据库很容易崩溃,为了防止这种短期内用户大量访问导致数据库崩溃,在我们的数据库前面加入了一个redis数据结构存储系统,也叫非关系型数据库

2.什么是redis 

redis是一款开源的键值对存储的数据结构存储系统,它将数据存储到内存中,也可以将数据从内存存储到硬盘上,再次启动时可以加载,保持数据的持久性,它部署在我们例如mysql数据库的前面,短时间大量数据(或者长期不变的数据)的访问都进入到redis中,减轻了我们自己数据库的负担,保护了我们的数据库.

3.redis的特点 

Redis 将数据存储在内存中,也支持数据的持久化,可以将内存中的数据保持 在磁盘中,重启的时候可以再次加载进行使用。
(1)  性能极高 , Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s 。
(2)Redis 供 list,set,zset,hash 等数据结构的存储。
(3)原子 – Redis 的所有操作都是原子性的,同时 Redis 还支持对几个操作全 并后的原子性执行。
(4)Redis 分布式集群化扩展性极,高即 master-slave(主-从)模式。
(5)redis是开源的数据库。
(6)redis是以键值对存储数据的。

4.在linux下的docker中安装redis

(1)创建 redis 配置文件和数据映射挂载卷
mkdir -p /opt/redis/conf
mkdir -p /opt/redis/data
(2)复制 redis.conf 文件到/opt/redis/conf 目录下( 注意,此文件已设置密码为 123 )
(3)安装命令
docker run -d -p 6379:6379 --name redis --restart=always  --privileged=true -v /opt/redis/conf/redis.conf:/etc/redis/redis.conf -v /opt/redis/data:/data redis:6.0
 四.redis中的数据结构

 1.redis中含有五种基本的数据结构,string(字符串), hash(哈希), list(列表), set(集合 ) ,zset(sorted set:有序集合)。

(1)String(字符串)

String是redis中最基本的数据类型,一个key对应一个value。

String是二进制安全的,它可以包含任何的数据,如图片和序列化的对象。

String最大能存储的数据是512MB。

String是单值缓存的

set key value  (设置String中的键和值)
get key  (获得String中的键)
del key  (删除String中的键)
keys * (获得String中所有的键)
单值缓存值可以为 json 字符串 

计数器
set     news_views:1 0 设置文章访问量
incr  news_views:1 文章访问量+1
decr news_views:1 文章访问量-1
get news_views:1 获得值
(2)Hash

redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象.、

redis hash与String不同的是redis hash中存储的例如每个键值都是相互独立的,像一个对象中的属性都是一个键值对且每个属性都是相互独立的如下,而String中例如一个对象就是一个String类型的,是一个整体。

1.hset key field value 存储一个哈希表 key 的键值
2.hget key field 获取哈希表 key 对应的 field 键值
3.hdel key field 删除哈希表 key 中的 field 键值
4.hlen key 返回哈希表 key 中的 field 的数量
5.hgetall key 返回哈希表 key 中所有的键值

 

(3)list(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列 表的头部(左边)或者尾部(右边)。

lpush key value[value...] 将一个或多个值插入到 key 列表的表头(最左边)

rpush key value[value...] 将一个或多个值插入到 key 列表的表尾(最右边)

lpop key 移除并返回 key 列表的头元素

rpop key 移除并返回 key 列表的尾元素

lrange key start stop 返回列表key中指定区间内的元素,区间以偏移量start 和 stop

常见用法
Stack= LPUSH + LPOP =FILO
Queue= LPUSH + RPOP

(4)set(集合)

Redis 的 Set 是无序集合。
sadd key member[member...] 往集合 key 中存入元素,元素存在则忽略, 若 key 不存在则新建
srem key member[member...] 从集合 key 中删除元素
smembers key 获取集合 key 中所有元素
scard key 获取集合 key 的元素个数
(5)zset(sorted set:有序集合)
redis zset 也是不允许重复的成员,但是是有序的。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为 集合中的成员进行从小到大的排序。
zset 的成员是唯一的,但分数(score)却可以重复.
zadd key score member[[score member]..] 往有序集合 key 中加入带分值元素
zrem key member[member...] 从有序集合 key 中删除元素
zscore key member 返回有序集合 key 中元素 member 的分值
zcard key 返回有序集合 key 中元素个数
(6)设置失效时间
有时候我们不希望在数据库中某个数据(key)长期存在,例如手机的验证码五分钟后失效等,类似的就可以通过给这个数据设置有效时间进而使其过了这个时间后自动删除,redis 提供了一些命令,能够让我们对 key设置过期时间,并且让 key 过期之后被自动删除.
EX 表示以秒为单位 PX 表示以毫秒为单位
EX,PX 不区分大小写
set name jim EX 30 设置失效时间为 30 秒
ttl 键 查看剩余时间(秒)
pttl 键 查看剩余时间(毫秒)

 五.StringBoot集成redis
(1)概述
Jedis 是 Redis 官方推出的一款面向 Java 的客户端,提供了很多接口供 Java 语言调用。可以在 Redis 官网下载.
Spring-data-redis 是 spring 大家族的一部分,提供了在 srping 应用中通 过简单的配置访问 redis 服务,对 reids 底层开发包(Jedis, JRedis, and RJC)进 行了高度封装,RedisTemplate 提供了 redis 各种操作.
(2)spring-data-redis 针对 jedis 提供了如下功能:
1. 连接池自动管理,提供了一个高度封装的“RedisTemplate”类.
2. 针对 jedis 客户端中大量 api 进行了归类封装,将同一类型操作封装为 operation 接口.
ValueOperations:简单 K-V 操作
SetOperations:set 类型数据操作
ZSetOperations:zset 类型数据操作
HashOperations:针对 map 类型的数据操作
ListOperations:针对 list 类型的数据操作3.将事务操作封装,有容器控制。
3.将事务操作封装,有容器控制。
4.针对数据的“序列化/反序列化”,提供了多种可选择策略(RedisSerializer)
JdkSerializationRedisSerializer:POJO 对象的存取场景,使用 JDK 本身 序列化机制.
StringRedisSerializer:Key 或者 value 为字符串的场景,根据指定的 charset 对数据的字节 序列编码成 string,是“new String(bytes, charset)”和 “string.getBytes(charset)”的直接封装。是最轻量级和高效的策略。
JacksonJsonRedisSerializer:jackson-json 工具提供了 javabean 与 json 之 间的转换能力,可以将 pojo 实例序列化成 json 格式存储在 redis 中,也可以将 json 格式的数据转换成 pojo 实例。
(3)在springboot中搭建redes

 1.在Maven中添加redis依赖

< dependency >
< groupId >org.springframework.boot</ groupId >
< artifactId >spring-boot-starter-data-redis</ artifactId >
</ dependency >

2.配置redis(注意要根据自己的redis数据库的ip与密码修改)

spring :
redis :
host : 192.168.31.100
port : 6379
password : 111
database : 0
pool :
max-active : 8 # 连接池最大连接数(使用负值表示没有限制)
max-wait : -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle : 8 # 连接池中的最大空闲连接
min-idle : 0 # 连接池中的最小空闲连接
timeout : 5000ms # 连接超时时间(毫秒)

3.在要连接的web层注入RedisTemplate

@Autowired
RedisTemplate redisTemplate ;

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

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

相关文章

1734. 解码异或后的排列

1. 题目 1734. 解码异或后的排列 2. 解题思路 要搞明白这个题目可以先来看下它的简化版题目&#xff1a;1720. 解码异或后的数组 [!NOTE] 题目&#xff1a; 未知 整数数组 arr 由 n 个非负整数组成。 经编码后变为长度为 n - 1 的另一个整数数组 encoded &#xff0c;其中 e…

ES6标准---【八】【学习ES6看这一篇就够了!!!】

目录 前言 export命令 输出变量 输出函数/类 export中的as别名 export必须一一对应 export接口的响应性 注意 import命令 import命令的语法 import命令里的as别名 import的只读性 import命令具有提升性 import的一些约定 import的静态执行 import的唯一执行性 模…

windows查找端口号被占用

在很多开发的时候&#xff0c;可能端口号有被占用的情况&#xff0c;导致项目打不开。 用下面这个命令即可&#xff1a; 比如我的3000端口被占用&#xff0c;我找找哪个进程在占用我的3000端口号

SVM原理

SVM 这里由于过了很长时间 博主当时因为兴趣了解了下 博主现在把以前的知识放到博客上 作为以前的学习的一个结束 这些东西来自其他资料上 小伙伴看不懂英文的自行去翻译下吧 博主就偷个懒了 多维空间和低维空间 不一样的分法&#xff0c;将数据映射到高维 &…

【电路笔记】-运算放大器比较器

运算放大器比较器 文章目录 运算放大器比较器1、概述2、表示2.1 同相比较器2.2 反相比较器3、临界点转换4、施密特触发器4.1 同相触发器4.2 反相触发器4.3 应用5、总结1、概述 在前面的大多数运算放大器文章中,电路都有一个到反相输入的反馈环路。 这种设计是最常见的,因为它…

汇总区间计算

给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区间范围 [a,b] 应该按…

感知笔记:ROS 视觉- 跟随红球

- 目录 - 如何在 ROS 中可视化 RGB 相机。如何作为机器人切换主题。如何创建 blob 检测器。如何获取要跟踪的颜色的颜色编码。如何使用 blob 检测数据并移动 RGB 相机以跟踪 blob。 机器人技术中最常见的传感器是不起眼的 RGB 摄像头。它用于从基本颜色跟踪&#xff08;blob 跟…

Vue2接入高德地图API实现搜索定位和点击获取经纬度及地址功能

目录 一、申请密钥 二、安装element-ui 三、安装高德地图依赖 四、完整代码 五、运行截图 一、申请密钥 登录高德开放平台&#xff0c;点击我的应用&#xff0c;先添加新应用&#xff0c;然后再添加Key。 如图所示填写对应的信息&#xff0c;系统就会自动生成。 二、安装…

python-奖金/贪心的小明

一&#xff1a;奖金 题目描述 企业发放的奖金根据利润提成。利润低于或等于 100000 元的&#xff0c;奖金可提 10%&#xff1b; 利润高于 100000 元&#xff0c;低于 200000 元&#xff08; 100000<I≤200000&#xff09;时&#xff0c;低于 100000 元的部分按 10% 提成&…

二叉树的链式结构和递归程序的递归流程图

二叉树的链式存储结构是指&#xff0c;用链表来表示一棵二叉树&#xff0c;即用链来指示元素的逻辑关系。 通常的方法是链表中每个结点由三个域组成&#xff0c;数据域和左右指针域&#xff0c;左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址 。链式结构又分…

一个基于VB的期刊信息管理系统

一个基本的期刊信息管理系统的示例&#xff0c;使用 Visual Basic (VB.NET) 编写。这个示例将展示如何创建一个简单的期刊信息管理系统&#xff0c;其中包括添加、查看、编辑和删除期刊的功能。 系统需求 添加期刊&#xff1a;允许用户输入期刊的信息&#xff08;如标题、作者…

面试官问:你如何处理与同事或上级的分歧?【无标题】

面试官问&#xff1a;你如何处理与同事或上级的分歧&#xff1f; 当面试官问你如何处理与同事或上级的分歧&#xff0c;其实面试官的目的是评估你的沟通技巧、冲突解决能力和团队合作的能力。在一起共事&#xff0c;就一定有分歧发生&#xff0c;有争执是正常的&#xff0c;关…

OpenCV 1

前言&#xff1a;开新坑辽&#xff0c;&#xff0c; 目录 计算机眼中的图像 视频的读取与处理 ROI区域 边界填充 数值计算 腐蚀操作 膨胀操作 开运算与闭运算 梯度计算 礼貌与黑帽 Sobel算子 梯度计算方法 scharr与laplacian 计算机眼中的图像 灰色图片&#xff0…

ROS第四梯:ROS项目中添加自定义类

第一步&#xff0c;ROS项目结构介绍 工作空间中包含一个名为pcl_ros_test的功能包&#xff0c;其中main.cpp是原有项目自带的&#xff0c;接下来以CommonAlg自定义类添加为例进行介绍。 第二步&#xff1a;头文件CommonAlg.h创建和编写&#xff0c;并保存在include/pcl_ros_tes…

达梦数据库导入xml迁移到达梦数据库大文件导致中断问题解决方案记录?

问题&#xff1a;我将同事给我的xml文件迁移到盗梦数据库&#xff0c;xml文件大约2G&#xff0c;在导入过程中&#xff0c;总是导入一半都不到就失败了。 原因&#xff1a;我的原因是我的电脑的系统的运行内存是16G的&#xff0c;后来我发现在没导入之前&#xff0c;其他进程已…

GUI编程18:文本框、密码框、文本域

视频链接&#xff1a;20、文本框、密码框、文本域_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DJ411B75F?p20&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.文本框 示例代码&#xff1a; package com.yundait.lesson06;import javax.swing.*; import java.a…

初始分布式系统和Redis特点(

&#xff08;一&#xff09;认识redis Redis是一个开源&#xff08;BSD许可&#xff09;&#xff0c;内存存储的数据结构服务器&#xff0c;可用作数据库&#xff0c;高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合&#xff0c;位图&#xff0c;hyperlog…

『功能项目』QFrameWorkBug修改器界面【65】

我们打开上一篇64QFrameWork道具栏物品生成的项目&#xff0c; 本章要做的事情是做一个道具bug调试面板&#xff0c;可以增加主角属性&#xff0c;可以增加道具的功能 首先创建一个空物体&#xff08;钉子&#xff09; 按住Alt键将空物体钉到左侧 重命名为Left 创建Button、Im…

基于SpringBoot+Vue的企业会议室预定管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

Qt实战案例(60)——利用QTimer类实现实时时间功能

目录 一、项目介绍二、项目基本配置三、UI界面设置四、主程序实现4.1 widget.h头文件4.2 widget.cpp源文件 五、效果演示 一、项目介绍 本文介绍利用QTimer类实现实时时间功能并在状态栏中进行显示。 二、项目基本配置 新建一个Qt案例&#xff0c;项目名称为“TimeTest”&am…