文章目录
Day01~Redis技术入门
核心知识点
- Redis技术简介(是什么,诞生背景,版本,基本架构)
- Redis服务的基本操作(登录redis,基础指令,退出redis)
- Redis中常用数据类型(string,hash,list,set)
- Redis数据库对应的Java客户端API应用(jedis,RedisTemplate)
常见问题分析
- Redis是什么?(分布式Key/Value结构的缓存数据库,非关系型数据,NoSql数据库)
- Redis数据库诞生的背景?(关系型数据库的访问压力比较大,本地内存不支持多服务实例共享)
- Redis数据库的基本架构?(C/S,redis-cli,redis-server)
- 你了解Redis有哪些基础指令?(redis-cli,redis-server,exit,clear,type,expire,shutdown,help,?,keys,flushall,flushdb)
- 字符串类型有什么特点?(所有值都是字符串,空间动态分配,可以实现整数值的递增,递减,实现日志记录)
- 操作字符串类型(string)的常用指令?(set,get,strlen,append,mset,mget,incr,incrby,decr,decrby)
- 哈希类型(hash)数据有什么特性?(就是值还可以使用key/value结构存储,key无序,key相同值覆盖,存储对象方便)
- 操作哈希类型(hash)的常用指令?(hset,hget,hgetall,hexits,hdel,hkeys,hvals,hincrby,hmget)
- 列表类型(list)数据有什么特性?(链表,会记录添加的元素的顺序,元素允许重复,可以实现FIFO,FILO这些特性)
- 操作列表类型(list)类型的常用指令?(lpush,rpop,rpush,lpop,lrem,lindex,ltrim,lset,linsert,lrange,rpoplpush)
- Set类型数据的特性?(散列,不记录元素添加顺序,不允许元素重复)
- 操作set类型的常用指令?(sadd,smembers,spop,smove,scard,sunion)
- Redis中各种数据类型的应用场景?
- 你知道Redis数据库对应的Java客户端有哪些?(Jedis,RedisTemplate)
- Redis数据库对应的配置文件是哪个?(redis.conf)
常见Bug分析
- redis服务不能启动?(看容器日志)
- Java中连接Redis失败?(检查ip地址,端口,防火墙,配置)
- 单元测试时,RedisTemplate对象空指针?(检查@Test引入的是否正确)
课堂练习
- 构建一个单例的JedisPool对象,基于此对象获取与redis的连接。
课后作业
- 总结课上知识点
- 完成Jedis方式对redis常用数据类型的操作
- 预习RedisTemplate对常用数据类型的操作(Spring Boot工程)
Day02~基于RedisTemplate对象操作redis缓存。
核心知识点
- RedisTemplate对象的基本应用(重点)
- StringRedisTemplate对象的基本应用 (默认字符串序列化)
- RedisTemplate对象的高度自定义实现(难点)
常见问题分析
- RedisTemplate 对象默认的序列化方式是什么?(JDK方式)
- RedisTemplate 对象按默认规则序列化时,我们的对象需要实现序列化接口吗?
- StringRedisTemplate对象与RedisTemplate对象最本质的区别是什么?(序列化方式)
- RedisTemplate对象基于默认的json方式序列化时会存储对象类型吗?
- 如何修改RedisTemplate对象的序列化方式?(通过setXxx等方法设置序列化)
- 自己有没有在项目中自己基于业务定义RedisTemplate对象呢?(有,修改序列化规则)
常见Bug分析
- 基于RedisTemplate对象的incrment方法实现key值的递增时,注意值的结构类型?
- 对象序列化和反序列化异常?(一定要注意序列化规则)
课后作业
- 总结课上知识点
- 完成RedisTemplate对象的定制应用(结合实践进行分析)
- 完成文档中基于redis的单点登录Demo以及投票系统的简易实现(必须完成)
- 预习Spring boot工程中基于AOP方式对redis数据库的操作。
Day03~Java中redis操作实践进阶
核心知识点
- 基于redis实现单点登录系统?(在redis记录用户状态)
- 基于redis实现某个活动的投票系统?
- 工程中基于AOP方式应用redis数据库?(假如需要更大灵活性,还是推荐自己玩)
常见问题分析
- 基于redis存储用户状态时,你使用的数据类型是什么?(hash类型)
- 通过redis存储登录状态,你觉得有什么弊端?(检查用户登录状态需要查询redis)
- 基于redis实现某个活动的投票系统,你使用的数据类型是什么?(Set类型)
- 在我们的业务对象中如何使用redis?(注入RedisTemplate或其子类,AOP方式)
- Spring工程中用于描述应用缓存的切入点注解你了解哪些?(@Cacheable,@CachePut,…)
- Spring工程中假如需要基于AOP方式整合缓存应用需要在配置上加什么注解吗?(@EnableCaching)
- Spring工程中CacheManager作用是什么?(管理缓存,定义缓存配置及实现,也可以定制)
常见Bug分析
- 依赖注入异常?(一个接口有多个实现时如何实现对象的注入)
- 启动AOP方式的缓存实现,在启动类或配置上类没有加@EnableCaching注解
课后作业
- 总结课堂知识点
- AOP方式实现缓存应用时配置key的有效期(定制)。
- 预习redis数据的持久化,redis中的事务处理。
Day04~Redis持久化,事务以及架构实践
核心知识点
- Redis 持久化
- Redis 事务管理
- Redis 主从架构,哨兵以及集群架构实践
常见问题分析
- 为什么要持久化?(更好的保证数据的可靠性,防止数据断电丢失)
- Redis中持久化的方式有哪些?(RDB,AOF)
- 你了解Redis中的哪些持久化配置?
- 如何理解Redis中AOF方式持久化内置的重写机制?
- 说说Redis中Rdb和Aof方式持久化数据的优势和劣势?
- 生产环境下如何应用Rdb和Aof的持久化方式?(两种都要配置)
- Redis主从架构,哨兵,集群架构诞生的一个背景?
- 单纯的Redis主从架构存在什么问题?(主机点宕机,整个主从不再支持写操作)
- Redis哨兵(sentinel)做用是什么?(监控主从节点工作状态,主节点宕机,自动选择主节点)
- 集群架构要解决的主要问题是什么?(单个主节点不能支持更大并发的写操作)
常见Bug分析
- redis配置文件配置出错导致redis服务无法启动?(vim指令不熟)
- 架构实践过程中要注意ip地址(最核心问题)。
课后作业
- 总结课上知识点
- 完成数据持久化,事务,架构实践的过程。