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:有序集合)](#(5)zset(sorted set:有序集合))

(6)设置失效时间

五.StringBoot集成redis

(1)概述

[(2)spring-data-redis 针对 jedis 提供了如下功能:](#(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 ;

相关推荐
Dlwyz16 分钟前
问题: redis-高并发场景下如何保证缓存数据与数据库的最终一致性
数据库·redis·缓存
编程修仙32 分钟前
Collections工具类
linux·windows·python
芝麻团坚果1 小时前
对subprocess启动的子进程使用VSCode python debugger
linux·ide·python·subprocess·vscode debugger
Elastic 中国社区官方博客1 小时前
Elasticsearch 中的热点以及如何使用 AutoOps 解决它们
大数据·运维·elasticsearch·搜索引擎·全文检索
写点什么啦1 小时前
[debug]不同的window连接ubuntu的vscode后无法正常加载kernel
linux·vscode·ubuntu·debug
wellnw1 小时前
[ubuntu]编译共享内存读取出现read.c:(.text+0x1a): undefined reference to `shm_open‘问题解决方案
linux·ubuntu
不爱学习的YY酱1 小时前
【操作系统不挂科】<CPU调度(13)>选择题(带答案与解析)
java·linux·前端·算法·操作系统
DC_BLOG1 小时前
Linux-Nginx虚拟主机
linux·运维·nginx
Stara05111 小时前
Git推送+拉去+uwsgi+Nginx服务器部署项目
git·python·mysql·nginx·gitee·github·uwsgi
坐公交也用券1 小时前
使用Python3实现Gitee码云自动化发布
运维·gitee·自动化