Contents

黑马Redis

基础篇

初识Redis

认识NoSql

redis是键值数据库(NoSQL)

SQL(关系型数据库) NoSQL(非关系型数据库)
数据结构 结构化(表结构固定、有约束) 非结构化(K-V型,文档型,图型)
数据关联 关联的(数据之间有外键联系) 无关联
查询方式 SQL查询 非SQL
事务特性 ACID严格事务 BASE(无严格事务实现)
存储方式 磁盘 内存
扩展性 垂直 水平

认识Redis

特征:

  • 键值型,value支持多种不同数据结构
  • 单线程,每个命令有原子性
  • 低延迟,速度快(基于内存、IO多路复用、良好的编码)
  • 支持数据持久化
  • 支持主从集群、分片集群
  • 支持多语言客户端

安装Redis

安装服务端(只有linux版,window版不是官方),自带CLI命令行客户端,安装客户端非官方图形客户端。

Redis命令

Redis数据结构介绍

key一般是String类型,value多种多样

./黑马Redis.assets/image-20241211142112810.png

通用命令

  • KEYS:查看符合模板的所有key(不建议在生产环境设备上使用)
  • DEL:删除一个指定key(可以跟多个key值)
  • EXISTS:查看key是否存在(可以跟多个)
  • EXPIRE:给一个key设置有效期,到期自动删除(秒)
  • TTL:查看一个key的剩余有效期(返回-1永久有效,-2已经删除了)

String类型

./黑马Redis.assets/image-20241211152630855.png

./黑马Redis.assets/image-20241211152754057.png

KEY的层级格式

./黑马Redis.assets/image-20241211154915219.png

./黑马Redis.assets/image-20241211155218066.png

Hash类型

./黑马Redis.assets/image-20241211155429798.png

./黑马Redis.assets/image-20241211155439167.png

List类型

./黑马Redis.assets/image-20241211161025599.png

./黑马Redis.assets/image-20241211161007905.png

Set类型

./黑马Redis.assets/image-20241211162120168.png

./黑马Redis.assets/image-20241211173523487.png

SortedSet类型

./黑马Redis.assets/image-20241211175829374.png

./黑马Redis.assets/image-20241211175847137.png

Redis的Java客户端

客户端对比

./黑马Redis.assets/image-20241211185806145.png

Jedis快速入门

./黑马Redis.assets/image-20241211190008351.png

./黑马Redis.assets/image-20241211190054638.png

Jedis连接池

./黑马Redis.assets/image-20241212155135261.png

SpringDataRedis

./黑马Redis.assets/image-20241212160534921.png

./黑马Redis.assets/image-20241212160849568.png

RedisTemplate快速入门

./黑马Redis.assets/image-20241212160931819.png

./黑马Redis.assets/image-20241212164048595.png

./黑马Redis.assets/image-20241212164103895.png

RedisTemplate的序列化器

因为默认的序列化器有问题

./黑马Redis.assets/image-20241212164908279.png

所以要替换序列化器

./黑马Redis.assets/image-20241212164835599.png

也可以序列化类

./黑马Redis.assets/image-20241212182415945.png

StringRedisTemplate

./黑马Redis.assets/image-20241212182726735.png

./黑马Redis.assets/image-20241212182828899.png

./黑马Redis.assets/image-20241212183445801.png

RedisTemplate操作hash类型

./黑马Redis.assets/image-20241212183836140.png

实战篇

课程介绍

./黑马Redis.assets/image-20241213110614285.png

短信登录

./黑马Redis.assets/image-20241213111553005.png

基于Session实现登录

./黑马Redis.assets/image-20241213115644084.png

实现发送短信验证码功能

./黑马Redis.assets/image-20241213141321267.png

实现短信验证码登录和注册功能

./黑马Redis.assets/image-20241213145105511.png

这里用了mybatis-plus

./黑马Redis.assets/image-20241213145152106.png

因为继承了mybatisplus提供的serviceImpl类

./黑马Redis.assets/image-20241213145231593.png

实体类会标注表,mapper类可以实现查询方法(继承BaseMapper有默认方法)

实现登录校验拦截器

./黑马Redis.assets/image-20241213145517459.png

./黑马Redis.assets/image-20241213145740211.png

./黑马Redis.assets/image-20241213151046031.png

这里继承spring提供的拦截器接口HandlerInterceptor,有默认实现,只需要实现其中两个,按ctrl+i查看实现方法。

./黑马Redis.assets/image-20241213152831825.png

这里创建拦截器,使用ThreadLocal保存用户信息

创建完成后需要配置WebMvcConfigurer才能生效

./黑马Redis.assets/image-20241213153348957.png

隐藏用户敏感信息

./黑马Redis.assets/image-20241213160433854.png

存session的时候减少存入信息

Session共享问题

./黑马Redis.assets/image-20241213162025453.png

Redis代替session业务

./黑马Redis.assets/image-20241213182743215.png

基于Redis实现登录

./黑马Redis.assets/image-20241216150658378.png

./黑马Redis.assets/image-20241216150539238.png

解决状态登录的刷新问题

./黑马Redis.assets/image-20241216152326224.png

商户查询缓存

r1