过去,关系型数据库(SQL Server、Oracle、MySQL)是数据持久化的唯一选择,但随着发展,关系型数据库存在以下问题。
#### 问题1:不能满足高性能查询需求
我们使用:Java、.Net等语言编写程序,是面向对象的。但用数据库都是关系型数据库。存储结构是面向对象的,但是数据库却是关系的,所以在每次存储或者查询数据时,我们都需要做转换。类似Hibernate、Mybatis这样的ORM框架确实可以简化这个过程,但是在对高性能查询需求时,这些ORM框架就捉襟见肘了。
#### 问题2:应用程序规模的变大
网络应用程序的规模变大,需要储存更多的数据、服务更多的用户以及需求更多的计算能力。为了应对这种情形,我们需要不停的扩展。
扩展分为两类:一种是纵向扩展,即购买更好的机器,更多的磁盘、更多的内存等等。另一种是横向扩展,即购买更多的机器组成集群。在巨大的规模下,纵向扩展发挥的作用并不是很大。首先单机器性能提升需要巨额的开销并且有着性能的上限,在Google和Facebook这种规模下,永远不可能使用一台机器支撑所有的负载。鉴于这种情况,我们需要新的数据库,因为关系数据库并不能很好的运行在集群上
- - - - - -
- 01【熟悉】NoSQL的简介
- 1,什么是NoSQL
- 2,NoSQL起源
- 3,NoSQL数据库类型
- 4,传统RDBMS VS NOSQL
- 02【熟悉】常见的NoSQL及区别
- 1,常见的NoSQL数据库
- 2,区别
- 03【熟悉】Redis简介
- 1,Redis简介
- 2,Redis的特点
- 04【掌握】Redis的安装及启动停止
- 1,下载Redis4
- 2,打开VM虚拟机把文件copy到software里面
- 3,开始安装
- 1,安装gcc 目地是编译软件
- 2,解压
- 2,把解压的文件copy到/usr/local/src里面
- 3,打开/usr/local/src/redis/deps进行编译依赖项
- 4,打开/usr/local/src/redis进行编译
- 5,在上面的Redis目录安装把它安装到/usr/local/redis里面
- 6,验证安装是否成功
- 7,把配置文件移动到/root/myredis目录[目录可以自定义] 可以为/root/myredis
- 8,启动Redis
- 9,默认情况,Redis不是在后台运行,我们需要把redis放在后台运行
- 10,再次启动查看进程
- 11,客户端链接和退出
- 12,停止redis
- 13,开机自启Redis的配置
- 14,bin目录的文件说明
- 3,redis配置[后面细说]
- 05【掌握】启动后相关知识串讲
- 1,单进程单线程
- 2,默认16个兄弟一起站台
- 3,切换数据库命令
- 4,常用基本命令
- 5,其它说明
- 6,为什么默认端口是6379
- 06【掌握】redis的数据类型
- 1,概述
- 2,字符串类型
- 3,list数据类型
- 4,hash数据类型
- 5,set数据类型
- 6,zset(sortset)数据类型
- 07【掌握】Redis的相关命令详解
- 1,常用命令
- 2,string类型相关命令
- 3,list
- 4,hash
- 5,set
- 6,zset
- 08【熟悉】解析配置文件redis.conf
- 1,配置文件在哪
- 2,Units单位
- 3,INCLUDES包含
- 4,NETWORK通用
- 5,GRNERAL通用
- 6,SNAPSHOTTING快照
- 7,REPLICATION复制
- 8,SECURITY安全
- 10,APPEND ONLY MODE 追加[持久化再说]
- 09【宝典】常见配置redis.conf介绍
- 10【掌握】Redis的持久化
- 1,概述
- 2,RDB【Redis DataBase】
- 2.1,什么是RDB
- 2.2,什么是FORK
- 2.3,保存位置及配置位置
- 2.4,如何触发RDB快照
- 2.5,如何恢复数据
- 2.6,优点
- 2.7,缺点
- 3,AOF
- 3.1,概述
- 3.2,原理
- 3.3,保存位置及位置配置
- 3.4,AOF启动/修复/恢复
- 3.5,优势
- 3.5,劣势
- 4,说了那么多,我们选择哪一个呢
- 4.1,官方建议
- 11【了解】Redis的事务
- 1,什么是Redis事务
- 2,能为我们做什么
- 3,怎么使用呢?
- 3.1,常用命令
- 3.2, 情况1:正常执行
- 3.3,情况2:放弃事务
- 3.4, 情况3:全体连坐
- 3.5,情况4:冤头债主
- 3.6,情况5:watch监控
- 4,3阶段
- 5,3特性
- 12【熟悉】Redis的复制(Master/Slave)
- 1,什么是复制
- 1.1,官网说明
- 1.2,行话
- 2,有什么作用
- 3,怎么使用
- 3.1,配从不配主
- 3.2,配置命令 【SLAVEOF 主库IP 主库端口】 (Redis重启后需要重新配置)需要把Redis都启动后,进入从机中,然后执行命令
- 3.3,详细操作
- 3.4,一主二仆
- 3.5,薪火相传
- 3.6,反客为主
- 4,复制的原理
- 5,哨兵模式
- 5.1,什么是哨兵模式
- 5.2,怎么玩(使用步骤)
- 5.3,一组sentinel能同时监控多个Master
- 6,复制的缺点
- 13【掌握】高可用高并发集群配置
- 1,中心化和去中心化
- 1.1,中心化
- 1.2,去中心化
- 2,Redis集群的执行流程分析
- 2.1,哈希槽说明
- 2.2,执行流程分析
- 3,Redis集群的搭建
- 3.1,文档
- 3.2,原理:去中心化
- 3.3,集群规则
- 3.4,搭建过程
- 14【掌握】Redis客户端使用
- 1, 工具说明
- 2, 下载客户端redis plus
- 3,安装
- 3,连接
- 15【掌握】java连接redis
- 1,Jedis所需要的jar包依赖
- 2,Jedis常用操作
- 2.1,测试连通性
- 2.2,常规操作【自学】
- 2.3,事务提交
- 2.4,主从复制
- 3,JedisPool
- 3.1,为什么要使用JedisPool
- 3.2,案例见代码
- 16【掌握】spring里面使用
- 1,spring集成redis
- 1.1,创建项目
- 1.2,修改pom.xml
- 1.3,搭建spring的环境
- 2,实现菜单数据的缓存
- 2.1,简单原理图
- 2.2,修改pom.xml
- 2.3,创建Menu
- 2.4,创建MenuMapper
- 2.5,创建MenuMapper.xml
- 2.6,创建MenuService
- 2.7,创建MenuServiceImpl
- 2.8,application-dao.xml
- 2.9,application-service.xml
- 2.10,application-redis.xml
- 2.11,applicationContext.xml
- 2.12,log4j.properties
- 2.13,db.properties
- 2.14,CacheAspect
- 2.14,application-aspect.xml
- 2.15,applicationContext.xml
- 2.16,打断点测试
- 17【掌握】spring+redis实现秒杀
- 18【掌握】springboot中使用redis
- 1,创建项目并选择依赖
- 2,spring boot 如何加载默认的对象
- 3,修改配置文件yml
- 5, RedisTemplate<Object,Object>(扩展String类型)操作Redis
- 6,集群的额外操作
- 18【掌握】springboot使用redis做缓存
- 修改仓库管理项目把前的缓存改成redis
- 添加依赖
- 配置yml
- 修改切面类
- 使用spring提供的注解方式来操作redis
- 开启缓存注解
- 修改ProviderService
- 修改ProviderServiceImpl
- 修改ProviderContrller
- 更改序列化的方式[创建配置类去解决]
- 注意点
- 19【掌握】Redis键和值的设计原则
- 1、redis value 值格式
- 2、redis key 键格式
- 20【掌握】面试中要知道的
- 1,Redis支持的数据类型?
- 2,什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么
- 3,Redis 有哪些架构模式?讲讲各自的特点?
- 4,什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?