Redis:
1、了解NoSQL
2、redis学习
redis概念
redis应用场景 ***
redis中操作的数据类型
3、Windows操作系统安装与启动redis
4、基于命令操作redis的各种数据类型数据 重点了解redis操作命令
5、redis的持久化
6、基于jedis操作redis
7、基于redis优化旅游网功能点
1、首页导航栏展示
2、用户注册时,验证码缓存操作
Mysql: 数据库(关系型数据库) DBMS文章源自JAVA秀-https://www.javaxiu.com/932.html
- 数据库: database
- 表: table
- 行: 记录
- 列: 字段
关系型数据库: 文章源自JAVA秀-https://www.javaxiu.com/932.html
- 数据存储时,数据和数据之间有一定的关联关系.
- 将数据存放在硬盘上
- Redis: 数据库(非关系型数据库)
非关系型数据库:文章源自JAVA秀-https://www.javaxiu.com/932.html
- 数据存储时,数据和数据之间没有任何的关联关系(类似于map集合)
- 将数据存放在内存中
1、NOSQL:
SQL: 结构化查询语言.文章源自JAVA秀-https://www.javaxiu.com/932.html
概述:
NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。文章源自JAVA秀-https://www.javaxiu.com/932.html
关系型数据库: mysql Oracle (DBMS:数据库管理系统)文章源自JAVA秀-https://www.javaxiu.com/932.html
- 数据存储时,数据和数据之间有一定的关联关系.
- 数据都存放在硬盘上.
- 数据库管理系统: Mysql
- 数据库:
- 表:
非关系型数据库:文章源自JAVA秀-https://www.javaxiu.com/932.html
- 数据存储时,数据和数据之间没有任何的关联关系.
- 数据库中的数据存内存中.
- 宕机: 非正常关机
- 吞吐量:海量的
NOSQL作用:
解决三高问题:文章源自JAVA秀-https://www.javaxiu.com/932.html
- 高并发:应对并发访问问题。因为数据从内存中获取,数据操作更快速。
- 高负载(高存储): 因为NoSQL非关系型数据库,数据存储量很大。例如:String类型能够存储512M内容。
- 高扩展(高可用): 因为数据与数据直接没有关联关系,可以很容易的添加非关系型数据库服务器节点。
- tomcat:支持200个请求。
特点:
- 易扩展 :数据与数据之间没有关联关系
- 大数据量,高性能
- 灵活的数据模型:可以任意加减数据模型字段
- 高可用:搭建主从备份方式,实现高可用
2、Redis:
概述:
Redis是用C语言开发的一个开源的高性能键值对(key-value)非关系型数据库。文章源自JAVA秀-https://www.javaxiu.com/932.html
- key:字符串类型
- value数据结构比较丰富
数据结构:
- 字符串类型 string 重点
- 散列类型 hash
- 列表类型 list 有序可重复
- 集合类型 set 无序不可重复
- 有序集合类型 sortedset 有序不可重复 zset
redis应用场景:
- 做缓存: 缓存的是使用频次较高,但不是特别重要的数据. 重要。例如:京东门户网站。那些模块可以使用缓存呢?
- 其中:商品分类列表数据经常查询,但是分类数据有很少发生变化。那为了减少数据库访问压力,提高查询性能,可以使用redis将分类列表数据缓存。
- 在做秒杀或抢购业务时,也可以使用缓存完成。主要使用redis缓存高性能。
- 任务队列。(秒杀、抢购、12306等等) 3、应用排行榜
- 网站访问统计
- 数据过期处理(可以精确到毫秒) 可以基于redis设置数据有效时间的方式,定时是数据过期,并从redis移除
- 分布式集群架构中的session分离
- 请求来时,优先查询非关系型数据库,
- 如果没有查到则查询关系型数据库,从关系型数据库中查询到结果后,将结果存放到非关系型数据库中,并将结果返回给浏览器.
- 如果查询到了,直接将查询结果返回给浏览器即可
- 当用户执行 增 删 改操作时,优先操作关系型数据库, (数据丢失)
- 操作完毕后,删除非关系型数据库中的相关数据. (数据同步)
redis安装:
- 解压缩即可
- redis默认端口号是:6379
redis启动和关闭:
启动:文章源自JAVA秀-https://www.javaxiu.com/932.html
- 方式1:
- 启动服务器: 双击 redis-server.exe 文件
- 启动客户端: 双击 redis-cli.exe 文件
- 方式2: 使用指定配置文件开启服务 (会持久化) ★★★★★
- 启动服务器: 在dos命令中输入 redis-server.exe redis.windows.conf
- 启动客户端: 在dos命令中输入 redis-cli.exe
关闭: 文章源自JAVA秀-https://www.javaxiu.com/932.html
- 方式1: 点击 X 号 非正常关闭,数据仍然不会持久化到磁盘
- 方式2: 正常关闭 ★★★★★ 正常关闭时,数据会持久化到磁盘上
- 在dos命令中输入 redis-cli.exe shutdown
- 退出客户端的名称 quit
总结:文章源自JAVA秀-https://www.javaxiu.com/932.html
- 在Windows上基于dos命令结合redis配置文件启动redis,可以实现redis数据的持久化。当然,前提是停止redis服务时,需要正常关闭,即通过命令完成关闭redis操作。redis-cli.exe shutdown。为了数据安全,建议使用第二种启动方式。
redis命令:
redis命令参考文档:http://redisdoc.com文章源自JAVA秀-https://www.javaxiu.com/932.html
基于get key 获取的值如果是nil,代表该值不存在。 使用命令操作redis的数据结构 redis: key-value key: String value: 5种 String★ Hash List Set SortedSet 操作redis的String类型 set key value 如果value是连续字符串,例如:tom,可以省略引号,如果不是连续字符串,例如”rose jhon“,则必须加引号 设置值时,当key不存在,则新增数据。如果key存在,则后面设置的值覆盖之前的值。 get key del key 常用: keys * type key del key exists key 操作hash类型数据 设置值:hset key field value 获取值:hget key field 删除值:hdel key field 删除整个hash对象:del key 操作list类型数据 设置值:lpush key values 左压栈 rpush key values 右压栈 获取值:lpop key values 左弹栈 rpop key values 右弹栈 获取某些值 lrange key 起始索引 结束索引 操作set类型数据 设置值:sadd key values 数据存储是无序的,且不能重复 获取值:smembers key 删除值:srem key values 操作zset类型数据(补充了解) 设置值:zadd key score1 value1 score2 value2...: 设置添加 获取值:zscore key value :获取成员的数字 删除值:zrem key value1 value2... :删除指定成员 zcard key :展示元素的长度
redis持久化:
注意: 要想使用redis的持久化操作,启动redis时必须采用配置文件.文章源自JAVA秀-https://www.javaxiu.com/932.html
一种是RDB方式: (默认)
rdb方式在持久化数据时,采用快照机制.文章源自JAVA秀-https://www.javaxiu.com/932.html
执行快照保存的时机: 文章源自JAVA秀-https://www.javaxiu.com/932.html
save 900 1 文章源自JAVA秀-https://www.javaxiu.com/932.html
第二个参数:多少秒后执行(执行时间) 第三个参数:至少几个key值发生改变,才执行RDB持久化 save 300 10 save 60 10000。文章源自JAVA秀-https://www.javaxiu.com/932.html
配置文件中配置了持久化保存的文件名称 dbfilename dump.rdb。文章源自JAVA秀-https://www.javaxiu.com/932.html
存在问题: 可能导致数据丢失。文章源自JAVA秀-https://www.javaxiu.com/932.html
在redis的配置文件中已经定义好使用rdb方式进行持久化了,将持久化的数据存放在当前目录的dump.rdb.文章源自JAVA秀-https://www.javaxiu.com/932.html
redis服务器正常关闭时也会执行持久化操作(快照保存数据)。文章源自JAVA秀-https://www.javaxiu.com/932.html
一种是AOF方式:
持久化的是执行过程,每一条命令都会持久化保存文章源自JAVA秀-https://www.javaxiu.com/932.html
使用方式:文章源自JAVA秀-https://www.javaxiu.com/932.html
1.开启AOF持久化(修改配置文件)文章源自JAVA秀-https://www.javaxiu.com/932.html
将配置文件中的 appendonly 改为 yes文章源自JAVA秀-https://www.javaxiu.com/932.html
appendfsync always (我们使用的)文章源自JAVA秀-https://www.javaxiu.com/932.html
# appendfsync everysec文章源自JAVA秀-https://www.javaxiu.com/932.html
# appendfsync no文章源自JAVA秀-https://www.javaxiu.com/932.html
特点:文章源自JAVA秀-https://www.javaxiu.com/932.html
不会导致数据丢失,但是性能低。文章源自JAVA秀-https://www.javaxiu.com/932.html
在实际开发中,往往采用RDB结合AOF完成持久化操作。文章源自JAVA秀-https://www.javaxiu.com/932.html
3、jedis:
jdbc: java操作mysql数据的方式文章源自JAVA秀-https://www.javaxiu.com/932.html
jedis: java操作redis数据库的方式文章源自JAVA秀-https://www.javaxiu.com/932.html
1、创建demo项目 2、导入相关jar包,并添加类路径 3、编写代码,完成基于jedis操作redis
三天案例中:文章源自JAVA秀-https://www.javaxiu.com/932.html
展示分类信息: 作业文章源自JAVA秀-https://www.javaxiu.com/932.html
优化导航条中的分类信息:文章源自JAVA秀-https://www.javaxiu.com/932.html
使用redis做缓存.文章源自JAVA秀-https://www.javaxiu.com/932.html
4、优化旅游项目
1、优化导航条中的分类信息文章源自JAVA秀-https://www.javaxiu.com/932.html
1、当用户查看首页时,导航栏时先尝试从redis中获取 2、如果能够从redis获取,直接返回 3、如果不能从redis获取,则从mysql中获取,并将查询结果放入redis中 优势:1、减少数据库访问压力 2、提高数据查询性能,改善用户体验。 注意:当首页旅游分类导航栏数据发生增删改操作时,需要清除redis中分类导航栏数据,从而实现redis与mysql数据同步。 实现步骤: 1、导入redis相关jar坐标 2、将操作redis的连接池工具类和配置文件导入旅游项目中 3、基于以上分析逻辑,改造分类导航栏查看代码
2、优化基于redis存储用户注册验证码,并通过redis的API设置验证码过期时间文章源自JAVA秀-https://www.javaxiu.com/932.html
由于之前没有学习redis,将手机验证码存入session中。session的生命周期过长,不适合存验证码数据 可以改造为基于redis存储 将之前基于session存验证码操作全部改为redis即可。jedis还可以设置redis数据的过期时间,正好满足业务要求。 可以设置验证码5分钟失效。 注意:当用户注册成功后,一定记得清除redis中记录的验证码
总结
1、介绍NoSQL 非关系型数据库 2、redis简介 重点掌握:redis应用场景 redis操作的数据类型 3、在Windows安装并运行redis 掌握:基于命令结合配置文件的方式启动并停止redis操作 4、基于命令操作redis各种数据类型 5、介绍redis持久化操作和配置 6、重点 掌握基于jedis操作redis ***** 7、实现基于redis优化旅游网站首页导航栏展示和用户注册验证码保存功能 *****文章源自JAVA秀-https://www.javaxiu.com/932.html

评论