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.rhkb.cn/news/430110.html

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

相关文章

Python模拟鼠标轨迹[Python]

一.鼠标轨迹模拟简介 传统的鼠标轨迹模拟依赖于简单的数学模型&#xff0c;如直线或曲线路径。然而&#xff0c;这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现&#xff0c;能够通过深度学习技术&#xff0c;学习并模拟更自然的鼠标移动行为。 二.鼠标轨迹算法实…

博睿谷IT认证-订阅试学习

在这个信息爆炸的时代&#xff0c;拥有一张IT认证证书&#xff0c;就像拿到了职场晋升的通行证。博睿谷&#xff0c;作为IT认证培训的佼佼者&#xff0c;帮你轻松拿下华为、Oracle等热门认证。下面&#xff0c;让我们一起看看博睿谷如何助你一臂之力。 学习时间&#xff0c;你说…

C++入门基础知识82(实例)——实例7【 判断一个数是奇数还是偶数】

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C 实例 【判断一个数是奇数还是偶数】相…

java重点学习-总结

十五 总结 https://kdocs.cn/l/crbMWc8xEZda &#xff08;总结全部的精华&#xff09; 1.面试准备 企业筛选简历规则简历编写注意事项(亮点)项目怎么找&#xff0c;学习到什么程度面试过程(表达结构、什么样的心态去找工作) 2.redis 缓存相关(缓存击穿、穿透、雪崩、缓存过期淘…

传输层协议 —— TCP协议(上篇)

目录 1.认识TCP 2.TCP协议段格式 3.可靠性保证的机制 确认应答机制 超时重传机制 连接管理机制 三次握手 四次挥手 1.认识TCP 在网络通信模型中&#xff0c;传输层有两个经典的协议&#xff0c;分别是UDP协议和TCP协议。其中TCP协议全称为传输控制协议&#xff08;Tra…

远程升级频频失败?你可能忽略了模组差分包…

去年开发的一个项目产品&#xff0c;用的是合宙4G-Cat.1低功耗模块Air780E。 最近有客户反馈在乡村里频繁出现掉线的情况。通过换货、换SIM卡对比排查测试&#xff0c;发现只有去年5月22号采购的那批模块在客户环境附近会出现掉线的情况&#xff0c;而今年4月份采购的模块批次…

【Go】Go 环境下载与安装教程(Windows系统)

引言 Go&#xff0c;也被称为Golang&#xff0c;是一种静态类型&#xff0c;编译型的编程语言&#xff0c;由Google设计和开发。Go语言的设计目标是“解决软件开发中的一些问题”&#xff0c;特别是在大规模软件系统的构建和维护方面。 下载安装包 打开官网下载页面&#xff…

03 添加并发请求

03 添加并发请求 我们通过两种方式演示发起多个请求&#xff1a; 使用 async 和 await 方式使用 Promise.all() 方式 首先使用async 和 await 方式发送请求&#xff0c;使用 async 和 await 能够控制异步任务以同步的流程执行&#xff0c;代码如下&#xff0c;这时候就会产生…

Git 提交规范

一、Git 提交规范的基本格式 通常&#xff0c;Git 提交信息采用以下格式&#xff1a; <type>: <subject><body><footer>type&#xff08;提交类型&#xff09;&#xff1a;用于说明提交的性质&#xff0c;常见的类型有以下几种&#xff1a; feat&…

仓颉编程语言4,遇到BUG求助

本来准备整仓颉链接Mysql数据库。参考&#xff1a;GitCode - 全球开发者的开源社区,开源代码托管平台 这种方式是拿mysql官方的dll&#xff0c;编译一下&#xff0c;然后再封装成仓颉数据库驱动。这种方式不够逼格&#xff0c;所以准备解析mysql网络协议&#xff0c;从0开始写…

cmd快速进入文件夹目录下

首先&#xff0c;将文件夹直接点击左键拖动至cmd窗口中&#xff0c;就可以得到目录路径。 还有就是&#xff0c;在命令行直接敲入D:或者C:就可以在磁盘之间进行转换&#xff0c;注意冒号不要丢。 再有&#xff0c;如果进入某磁盘中的一个文件夹&#xff0c;使用cd命令。路径获取…

SpringBoot实战(三十)发送HTTP/HTTPS请求的五种实现方式【下篇】(Okhttp3、RestTemplate、Hutool)

目录 一、五种实现方式对比结果二、Demo接口地址实现方式三、Okhttp3 库实现3.1 简介3.2 Maven依赖3.3 配置文件3.4 配置类3.5 工具类3.6 示例代码3.7 执行结果实现方式四、Spring 的 RestTemplate 实现4.1 简介4.2 Maven依赖4.3 配置文件4.4 配置类4.5 HttpClient 和 RestTemp…

Parallels Desktop 20 for Mac 推出:完美兼容 macOS Sequoia 与 Win11 24H2

Parallels Desktop 20 for Mac 近日正式发布&#xff0c;这一新版本不仅全面支持 macOS Sequoia 和 Windows 11 24H2&#xff0c;还在企业版中引入了一个全新的管理门户。新版本针对 Windows、macOS 和 Linux 虚拟机进行了多项改进&#xff0c;其中最引人注目的当属 Parallels …

导出导入Oracle数据库使用黑框命令方式exp、imp【亲测】

下载工具 根据自己数据库的版本下载&#xff0c;以v19为例&#xff1a; 下载基础包Basic Package和工具包Tools Package 两个压缩包中的文件夹一样&#xff0c;但内容不一样&#xff0c;将两个压缩包中的文件解压合并到一起 https://www.oracle.com/database/technologies/inst…

SpringCloud入门(六)Nacos注册中心(下)

一、Nacos环境隔离 Nacos提供了namespace来实现环境隔离功能。 nacos中可以有多个namespace。namespace下可以有group、service等。不同namespace之间相互隔离&#xff0c;例如不同namespace的服务互相不可见。 使用Nacos Namespace 环境隔离 步骤&#xff1a; 1.在Nacos控制…

时间序列无监督异常点检测算法_孤立森林,局部离群因子检测和自编码器

数据入口&#xff1a;压气机异常检测一维时间序列 - Heywhale.com 该数据为采样自工业压气机的一维时间序列数据。本文将通过无监督时间序列算法进行时间序列异常检测。针对时间序列数据&#xff0c;常用的无监督异常检测算法包括&#xff1a;孤立森林&#xff08;Isolation Fo…

【Yonghong星球】Windows平台上Yonghong的Python、DM-Engine安装与配置详细攻略

文章目录 问题描述问题解决(配置相应的python计算服务)拓展 第三方工具包安装/更新其他出现问题 问题描述 当我们进行深度分析的时候&#xff0c;运行结点报错&#xff0c;这是因为需要配置相应的python计算服务。 报错内容&#xff1a; 2024-09-20 13:57:22 开始运行“各省G…

js中的 赋值 浅拷贝 和 深拷贝 详细解读

js数据类型主要分基本数据类型和引用数据类型。前者包括Number,String等&#xff0c;后者主要是Object,因此以下会针对不同的数据类型来分析,需要的朋友可以参考一下 基本数据类型&#xff08;Primary Data Types&#xff09;: String&#xff08;字符串&#xff09; Number&…

三端全隔离485中继器光电隔离工业级 RS485集线器2口信号放大器 抗干扰防雷

485中继器光电隔离工业级 RS485集线器2口信号放大器 抗干扰防雷https://item.taobao.com/item.htm?ftt&id713033449656 哪里信号不好&#xff0c;中继器就接哪里 将有效的对信号进行隔离放大 信号隔离 电源隔离 双向传输 即插即用 增强抗干扰 延长通信距离 产品概…

防火墙详解(二)通过网页登录配置华为eNSP中USG6000V1防火墙

配置步骤 步骤一 打开eNSP&#xff0c;建立如下拓扑。防火墙使用&#xff1a;USG6000V1。 Cloud的作用是通过它可以连接本地的网卡&#xff0c;然后与我们的电脑进行通信。 由于防火墙USG6000V&#xff0c;不能直接开启&#xff0c;需要的导入包&#xff0c;所以需要在华为官网…