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

目录

一.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.xdnf.cn/news/144503.html

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

相关文章

【AI大模型应用开发】文本向量化与向量相似度(附Python代码)

本文介绍下文本向量化的概念&#xff0c;以及向量检索的原理&#xff0c;只是简单介绍&#xff0c;不会深入&#xff0c;所以不用担心看不懂&#xff0c;想要详细研究的&#xff0c;可以去搜相关论文&#xff0c;涉及到机器学习和模型训练等。 0. 文本向量 0.1 什么是文本向量…

计算机三级网络技术总结(四)

路由刷新表报文主要内容是由若干&#xff08;V、D&#xff09;组成的表每一个区域OSPF拥有一个32位的区域标识符当链路状态发生变化时用洪泛法向所有路由器发送信息不能用于网络嗅探的是NS-2&#xff08;NS-2是一种针对网络技术的源代码公开的、免费的软件模拟平台&#xff0c;…

Java项目实战II基于Java+Spring Boot+MySQL的洗衣店订单管理系统(开发文档+源码+数据库)

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者 一、前言 随着生活节奏的加快&#xff0c;现代人对便捷、高效服务的需求日益增长&#xff0c;洗衣店作为日常生…

力扣 中等 2300.咒语和药水的成功对数

文章目录 题目介绍解法 题目介绍 解法 class Solution {public int[] successfulPairs(int[] spells, int[] potions, long success){Arrays.sort(potions);int n spells.length, m potions.length;int[] pairs new int[n];for (int i 0; i < n; i) {int left 0, righ…

【如何使用Python操作Kafka】

如何使用Python操作Kafka 1、安装kafka pip install kafka2、直接编写Kafka工具脚本 kafka_tools.py # -*- coding: utf-8 -*-import json from kafka import KafkaConsumer, KafkaProducerclass KProducer:def __init__(self, username_ip, topic):"""kafk…

【算法篇】栈与队列类(笔记)

目录 一、用栈实现队列 二、用队列实现栈 三、有效的括号 四、删除字符串中的所有相邻重复项 五、逆波兰表达式求值 六、滑动窗口最大值 七、前 K 个高频元素 一、用栈实现队列 232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/proble…

[PTA]7-6 吃火锅

[PTA]7-6 吃火锅 以上图片来自微信朋友圈&#xff1a;这种天气你有什么破事打电话给我基本没用。但是如果你说“吃火锅”&#xff0c;那就厉害了&#xff0c;我们的故事就开始了。 本题要求你实现一个程序&#xff0c;自动检查你朋友给你发来的信息里有没有 chi1 huo3 guo1。 …

手写Spring

简单实现Spring基于注解配置 ComponentScan Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) public interface ComponentScan {String value() default ""; } 相当于component-scan HspSpringConfig ComponentScan(value "spring.write.com…

两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力

今天就遇到有点儿dt的问题&#xff0c;利用大模型顺利通了自定义的工具调用&#xff08;并没有用到tools功能&#xff0c;而是通过prompt强制输出&#xff09;&#xff0c;单个单个的没问题哈&#xff0c;但是多个一起就出现问题了 我说“关闭电脑PC1, 打开第2台电脑” 它看不懂…

安卓实现导入Excel文件

使用简化版的jar包 api files(libs/poi-3.12-android-a.jar) api files(libs/poi-ooxml-schemas-3.12-a.jar) 导入遇到了两个兼容问题 1.build.gradle文件里面 android { 要添加 packagingOptions {exclude META-INF/INDEX.LIST } 2.加载大文件要在清单文件里面加androi…

网络变压器HR911130C的使用注意点

HR911130C的使用&#xff0c;需要2个注意点&#xff1a; 1&#xff09;数据线data0、data2、data3是相邻的引脚&#xff0c;但是data1是 不相邻的两个引脚&#xff0c;注意看下面的电路图&#xff0c;所以绘图时需要注意 2&#xff09;LED灯的连接 11脚、12脚&#xff0c;连…

快手可灵AI全球升级1.5模型:引入“运动笔刷”功能 画质大幅提升

9月19日&#xff0c;快手公司宣布其可灵AI模型进行了全球范围内的重磅升级&#xff0c;推出了1.5版本。新版本在多个方面实现了显著提升&#xff0c;包括视频画质、动态效果、美学表现、运动合理性以及语义理解等。 新升级的1.5模型支持在高品质模式下直接输出1080p高清视频&am…

【CSS】一行三个盒子 每个盒子都是16:9

padding-top 属性接受百分比值时,其百分比是基于父元素的宽度来计算的,而不是自身元素的宽度 aspect-ratio 更方便&#xff0c;但存在兼容性问题 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name&quo…

字符设备驱动 — 4 异常与中断

异常与中断 中断属于异常的一种 异常会直接打断 CPU 的运行&#xff0c;而各种中断会被传到中断控制器&#xff0c;由中断控制器来选择优先级最高的中断并通知 CPU 处理流程 arm 对异常&#xff08;中断&#xff09;处理流程&#xff1a; 初始化&#xff1a; 设置中断源&…

水经微图PC版5.0.0即将内测

让GIS更简单高效&#xff01; 水经微图&#xff08;以下称“微图”&#xff09;PC版5.0.0即将内测&#xff0c;这是一个基于WeMapEngine开发的全新版本。 关于什么是WeMapEngine&#xff0c;请从《WeMapEngine可快速构建的GIS应用功能》一文中了解。 微图5.0.0功能界面 水经…

【分享】“可恶”的运算放大器电容负载

他们说如果使用放大器驱动电容负载(图 1、CLOAD)&#xff0c;一个不错的经验是采用一个 50 或 100 欧的电阻器 (RISO) 将放大器与电容器隔开。这个附加电阻器可能会阻止运算放大器振荡。 图 1.支持电容负载的放大器可能需要在放大器输出与负载电容器之间连接一个电阻器。 使用…

STM32—I2C通信外设

1.I2C外设简介 STM32内部集成了硬件I2C收发电路&#xff0c;可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能&#xff0c;减轻CPU的负担支持多主机模型&#xff08;可变多主机&#xff09;支持7位/10位地址模式&#xff08;11110......)支持不同的通…

JavaWeb JavaScript 11.XML —— 配置文件

生活想埋没我&#xff0c;没想到我是颗种子 —— 24.9.19 一、XML 1.什么是XML XML是EXtensible Markup Languge的缩写&#xff0c;翻译过来就是可扩展标记语言。所以很明显&#xff0c;XML和HTML一样都是标记语言&#xff0c;也就是说它们的基本语法都是标签 可扩展 三个字…

OpenCV基础入门30讲(Python)——第二讲 图像色彩转换

常见的几种颜色类型介绍 1、彩色图像&#xff08;Color Image&#xff0c;BGR&#xff09; 数据类型&#xff1a;uint8通道数&#xff1a;3&#xff08;BGR&#xff1a;蓝色、绿色、红色&#xff09;描述&#xff1a;彩色图像有三个通道&#xff0c;每个通道的值范围是 0 到 …

【图书推荐】《Autodesk Inventor 2024入门与案例实战(视频教学版)》

本书重点 配套示例文件、PPT课件、教学视频、电子教案、课程标准、骄婿大纲、模拟试题、作者微信群答疑服务。 内容简介 《Autodesk Inventor 2024入门与案例实战&#xff1a;视频教学版》以Autodesk Inventor 2024为平台&#xff0c;重点介绍Autodesk Inventor 2024中文版的…