目录
一.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/confmkdir -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 字符串
(2)Hash
redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象.、
redis hash与String不同的是redis hash中存储的例如每个键值都是相互独立的,像一个对象中的属性都是一个键值对且每个属性都是相互独立的如下,而String中例如一个对象就是一个String类型的,是一个整体。
(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
(4)set(集合)
(5)zset(sorted set:有序集合)
(6)设置失效时间
有时候我们不希望在数据库中某个数据(key)长期存在,例如手机的验证码五分钟后失效等,类似的就可以通过给这个数据设置有效时间进而使其过了这个时间后自动删除,redis 提供了一些命令,能够让我们对 key设置过期时间,并且让 key 过期之后被自动删除.
五.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.100port : 6379password : 111database : 0pool :max-active : 8 # 连接池最大连接数(使用负值表示没有限制)max-wait : -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)max-idle : 8 # 连接池中的最大空闲连接min-idle : 0 # 连接池中的最小空闲连接timeout : 5000ms # 连接超时时间(毫秒)
3.在要连接的web层注入RedisTemplate
@AutowiredRedisTemplate redisTemplate ;