黑马Redis
Contents
基础篇
初识Redis
认识NoSql
redis是键值数据库(NoSQL)
| SQL(关系型数据库) | NoSQL(非关系型数据库) | |
|---|---|---|
| 数据结构 | 结构化(表结构固定、有约束) | 非结构化(K-V型,文档型,图型) |
| 数据关联 | 关联的(数据之间有外键联系) | 无关联 |
| 查询方式 | SQL查询 | 非SQL |
| 事务特性 | ACID严格事务 | BASE(无严格事务实现) |
| 存储方式 | 磁盘 | 内存 |
| 扩展性 | 垂直 | 水平 |
认识Redis
特征:
- 键值型,value支持多种不同数据结构
- 单线程,每个命令有原子性
- 低延迟,速度快(基于内存、IO多路复用、良好的编码)
- 支持数据持久化
- 支持主从集群、分片集群
- 支持多语言客户端
安装Redis
安装服务端(只有linux版,window版不是官方),自带CLI命令行客户端,安装客户端非官方图形客户端。
Redis命令
Redis数据结构介绍
key一般是String类型,value多种多样

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


KEY的层级格式


Hash类型


List类型


Set类型


SortedSet类型


Redis的Java客户端
客户端对比

Jedis快速入门


Jedis连接池

SpringDataRedis


RedisTemplate快速入门



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

所以要替换序列化器

也可以序列化类

StringRedisTemplate



RedisTemplate操作hash类型

实战篇
课程介绍

短信登录

基于Session实现登录

实现发送短信验证码功能

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

这里用了mybatis-plus

因为继承了mybatisplus提供的serviceImpl类

实体类会标注表,mapper类可以实现查询方法(继承BaseMapper有默认方法)
实现登录校验拦截器



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

这里创建拦截器,使用ThreadLocal保存用户信息
创建完成后需要配置WebMvcConfigurer才能生效

隐藏用户敏感信息

存session的时候减少存入信息
Session共享问题

Redis代替session业务

基于Redis实现登录


解决状态登录的刷新问题

商户查询缓存
r1