课前预习
1. 关系型数据库和非关系型数据库?
2. 除了redis其他非关系型数据库还有哪些?
3. redis如何安装?
4. redis在项目中能做什么?
本章内容
1. 架构的演变
2. 关于NoSQL
3. redis介绍及安装
4. redis入门
5. redis数据类型
6. redis事务
7. 压测工具
8. redis配置详解
9. redis持久化
10. redis发布订阅
11. redis集群
12. springboot+redis综合
13. redis面试题
14. redis + linux测验题
1. 架构的演变
1.1 单体/库架构
90年代开始,当时主流的技术是JSP/HTML+Servlet+JDBC,那个时候网站上基本的网站访问量都不会太大,
所以单机数据库就已经完全胜任。那个时代互联网刚刚发展! select * select 列名 where 条件要精准
架构的瓶颈
数据量太大怎么办?
数据访问量太大怎么办? --(读写混合)
当数据库单表数据超出千万级别,就必须需要创建索引,内存放不下怎么办?
1.2 缓存+读写分离+垂直拆分
单纯的实现了读写分离确实也解决了服务器压力,但是不足以胜任日益增长的访问量,然后我们将矛头指向
了架构优化,如何优化
瓶颈:
用户量和数据量越来越大,即使我们通过读写分离和分库分表也不足以支撑的时候,单表数据量已经爆炸
了。
1.3 分库分表+水平拆分(MySQL集群)
瓶颈:
近10年,是历史上科技发展最迅速的10年,我们的数据从简单的文字、图片也已经转变为各式各样的数据类
型,那么传统的关系型数据库MySQL已经不满足
我们现在发展的需求。图片、热点数据、大篇幅文章、定位信息等各式各样的数据扑面而来!,那么就需要
我们挨个解决,
如果有一个数据库能帮助我们分担这种特殊的数据,那么关系型数据库(MySQL、Oracle)的压力也就会变
小了。
同时数据的存储也从IO 1+1 变成了 IO 1+N
1.4 当下互联网公司架构
那么我们对架构的分析,大家也了解到,目前互联网项目对于各式各样的数据我们MySQL这种关系型数据库
存储数据就显得特别疲惫,那么这个时候
NoSQL(非关系型)数据库就随之而来。
2. 关于NoSQL
NoSQL ---- 错误翻译 没有SQL
正确翻译:Not Only SQL (不仅仅是SQL) 泛指我们非关系数据库,主要适用于web2.0 时代。
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0
网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以
克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生
就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题
2.1 区别
关系型:
表 - 行 - 列
非关系型
典型的就是key-value形式进行存储数据,而且存储的类型也变得多样化,不再是单一的文字结构。
2.2 NoSQL特点
扩展方便,数据与数据之间没有必然联系,0耦合。
大数据量和高性能(redis => 单秒写10万次 读取11万次) QPS
数据类型的多样化(5+3) String、List、Set、Hash、Zset | geo(地理位置信息) 、hyperloglog(访
客信息)、bitmap 位图(常用计算活跃粉丝和不活跃粉丝、登录和未登录、是否打卡等)
不需要提前设计数据库,随取随用。
2.3 淘宝架构分析
商品基本信息 id、名称、分类基本信息
商品的描述信息、评论等文字量较多的信息
- MySQL | Oracle 淘宝是讲MySQL进行了开发,虽然都叫MySQL但是内容完全不同
2012年5月,淘宝做了一个艰难的决定,实行去IOE运动。这里的I是指IBM小型机,O指oracle数据库,E是指
EMC2是数据库的存储设备。而这一次的去IOE运动却恰恰是将亚洲亚洲最成功也是最大的oracle RAC应用的典范
转换为MYSQL +PC server,当然需要mysql的hadoop集群的架构。
图片
商品的关键字(搜索功能)
热门的波段信息(秒杀)
订单交易
阿里的框架发展史(强烈建议阅读)
https://max.book118.com/html/2019/0407/6144150224002021.shtm
所以看似平凡的网页背后所需的技术支撑是多个复杂与庞大才能适用于我们现在。赠送大家一句话:所有牛
逼的人都有一段苦逼的岁月!但是你只需要像SB一样的坚持,终将NB!!!
2.4 NoSQL的四大类
- MongoDB 文档型数据库
- 淘宝 - TFS 自主研发
- 分布式系统 FastDFS
- Google - GFS 自主研发
- Hadoop -- HDFS
- 阿里云 - OSS
- 搜索引擎 solr elasticsearch --比较火
- 淘宝自己使用 ISearch
- Redis Tair memacached
- 第三方应用 MQ消息中间件 -- RabbitMQ
# KV类型
- 新浪 redis
- 美团 Redis + Tair
- 阿里、百度 redis + memcached
# 文档类型数据库(BSON 和 JSON一样)
- MongoDB (目前企业需求也是比较大的) 是一个给予分布式存储的数据库,主要用于处理大量的文档,
是一个介于关系型和非关系型数据库的中间产品,本身属于非关系型。
# 列存储的数据库
- 大数据的HBase
- 分布式文件系统(一个业务分拆多个子业务,部署在不同的服务器上)
3. redis介绍及安装
3.1 redis介绍
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可
基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的
开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
redis 大事件
2009 揭秘创始人创建Redis背后的故事 https://www.sohu.com/a/403189647_590700
2020.6 Redis 创始人宣布退居二线:我写代码只是为了表达自己!
https://zhuanlan.zhihu.com/p/155645360
redis能做什么?
1. 内存存储,持久化,断电即丢失,所以持久化很重要,redis采用两种机制(RDB和AOF)
2. 效率高,可以用于高速缓存
3. 发布订阅系统
4. 地图信息分析
5. 计数器等,网站浏览量
redis特点/特性
1. 多样的数据类型
2. 持久化
3. 集群
4. 事务等...
3.2 Install redis in centos7
# 图形关系数据库
- 图示 - 存储的是图形关系,类似与朋友圈或社交平台
- Neo4J InfoGrid
3.2.1 Install gcc
linux中的gcc是由GNU推出的一款功能强大的、性能优越的多平台编译器。gcc编译器能将C、C++语言
源程序和目标程序编译、连接成可执行文件。
因为redis依赖c++环境 所以我们需要安装c++
可以通过gcc -v 检查版本
升级版本 因为redis7.* 需要gcc高版本的支持 4个分别执行
继续查看gcc版本 升级到9.* 完成安装
3.2.2 下载与安装redis
redis可以在windows和linux下安装使用,但是windows系统版本已经停更很长时间,不建议使用。
官网 https://redis.io/ 中文网 http://www.redis.cn/
通过工具将安装文件放在opt文件夹下:
注意:如果是系统应用如Java我们会安装到/usr/local 下, 如果是用户级的应用,我们就放在opt下
解压文件夹:
yum install gcc-c++
gcc -v
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
#修改使用版本
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
解压后进入redis文件夹查看文件:
编译:会将需要的配置帮助我们配置完成
这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要
调用perl或python来进行编译)。如果 在 make 过程中出现 error ,就要记下错误代码(注意不仅仅
是最后一行),然后可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址)。或者系统少了
一些依赖库等,这些需要自己仔细研究错误代码。make 的作用是开始进行源代码编译,以及一些功能
的提供,这些功能由他的 Makefile 设置文件提供相关的功能。比如 make install 一般表示进行安装,
make uninstall 是卸载,不加参数就是默认的进行源代码编译。make 是 Linux 开发套件里面自动化
编译的一个控制程序,他通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行
某些需要的程序进行编译的程序。
安装redis
这条命令来进行安装(当然有些软件需要先运行 make check 或 make test来进行一些测试),这一步
一般需要你有 root 权限(因为要向系统写入文件)。
命令拓展 - 软件安装流程
make #注意需要在解压后的redis文件夹中执行
make install
1、解zhi包软件
tar zxf xxxx.tgz
2、配置
cd xxxx
./configure
3、编译
make
4、安装
make install
5、卸载
make uninstall
检查redis环境服务所在的位置
启动测试
2.2.3 配置redis
安装vim编辑器
备份文件
在redis配置文件的同级目录创建一个文件夹并且cp一个redis.conf文件到新的文件夹,
以后我们使用这个cp的文件进行操作,原生原件不变动。
redis-server
redis-server redis-config #后面是配置文件路径
yum -y install vim*
修改后台启动
daemonize 默认值是no 修改yes 意思是以守护进程方式启动(后台运行)
重新启动redis 并查看测试
查看进程
客户端连接测试
vim redis-conf
[root@it-sunwz ~]# redis-server /opt/redis-6.0.6/it-sunwz/redis.conf
ps -aux | grep redis
ps -ef | grep redis
[root@it-sunwz ~]# redis-cli -h 127.0.0.1 -p 6379
[root@it-sunwz ~]# redis-cli -h 127.0.0.1 -p 6379 --raw #支持中文显示
客户端IO测试
退出客户端和结束服务
防火墙命令拓展
2.2.4 redis开关
第一种:退出客户端之后
[root@sunwz ~]# redis-cli shutdown
第二种:直接在客户端内(建议)
127.0.0.1:6379>shutdown
set name 张三
get name
keys *
# 退出客户端
exit
# 结束服务方式1
s1c4 Redis
最新推荐文章于 2024-09-01 23:19:40 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)