隋唐演义

隋唐演义

Redis【为什么要用NoSQL、什么是NoSQL、Redis是什么 、Linux下安装Redis 、Docker下安装Redis】(一)-全面详解(学习总结---从入门到深化)

双十一 0

手机淘宝搜:天降红包55 5月20日开始,每天领红包。
京示搜:天降红包369,5月28日开始

有redis为什么还要mq,为什么要用redis做缓存,redis为什么是6379,为什么redis需要把数据放到内存中

👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 🍂博主正在努力完成2023计划中:以梦为马,扬帆起航,2023追梦人?

目录

Redis概述_为什么要用NoSQL

?Redis概述_什么是NoSQL

NoSQL的四大分类?

Redis概述_当下NoSQL经典应用?

Redis概述_Redis是什么?

Redis安装_Linux下安装Redis?

?下载地址

下载Redis?

Redis安装_Docker下安装Redis

?Redis安装_基本知识

为什么默认端口6379

Redis数据类型_key键

?单机Mysql的美好年代

在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。

遇到问题:

随着用户数的增长,Tomcat和数据库之间竞争资源,单机性能不足以支撑业务。?

Tomcat与数据库分开部署?

Tomcat和数据库分别独占服务器资源,显著提高两者各自性能。

新的问题:

随着用户数的增长,并发读写数据库成为瓶颈。?

引入本地缓存和分布式缓存?

通过缓存能把绝大多数请求在读写数据库前拦截掉,大大降低数据库压力。其中涉及的技术包括:使用 memcached作为本地缓存,使用Redis作为分布式缓存。

注意:

缓存抗住了大部分的访问请求,随着用户数的增长,并发压力主要落在单机的Tomcat上,响应逐渐变慢。?

引入反向代理实现负载均衡?

在多台服务器上分别部署Tomcat,使用反向代理软件(Nginx)把请求均匀分发到每个Tomcat中。

新的挑战:

反向代理使应用服务器可支持的并发量大大增加,但并发量的增长也意味着更多请求穿透到数据库,单机的数据库最终成为瓶颈。

数据库读写分离?

由于数据库的写入压力增加,【【微信】】只能缓解数据库的读取压力。读写集中在一个数据库上让数据库不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提高读写性能和读库的可扩展性。Mysql的【【微信】】模式成为这个时候的网站标配了

新的挑战:

业务逐渐变多,不同业务之间的访问量差距较大,不同业务直接竞争数据库,相互影响性能。?

数据库按业务分库?

把不同业务的数据保存到不同的数据库中,使业务之间的资源竞争降低,对于访问量大的业务,可以部 署更多的服务器来支撑。

为什么用NoSQL?

用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。

实时学习反馈

1. 单机Mysql的架构,随着用户数的增长,并发读写数据库成为瓶颈如何解决。?

A 引入本地缓存和分布式缓存

B 引入反向代理实现负载均衡

C 引入NoSQL数据库

D 数据库读写分离

2. 单机Tomcat压力大,响应逐渐变慢如何解决。

A 引入本地缓存和分布式缓存

B 引入反向代理实现负载均衡

C 引入NoSQL数据库

D 数据库读写分离

什么是NoSQL?

NoS【【微信】】 = 【【微信】】),意即“不仅仅是SQL”,泛指非关系型的数据库。随着互联网web2.0 网站的兴起,传统的关系数据库在应付特别是超大规模和高并发类型纯动态网站已经显得力不从心,暴露了很多难以克服的问题。

结构化数据和非结构化数据?

1、结构化数据指的是由二维表结构来逻辑表达和实现的数据,严格遵循数据格式与长度规范,也称作 为行数据。?

2、非结构化数据,指的是数据结构不规则或不完整没有任何预定义的数据模型不方便用二维逻辑表来表现的数据,例如办公文档(Word)、文本、图片、HTML、各类报表、视频音频等。

KV型NoSql(代表----Redis)?

KV型NoSql顾名思义就是以键值对形式存储的非关系型数据库,是最简单、最容易理解也是大家最熟悉 的一种NoSql,因此比较快地带过。

特点:

1、数据基于内存,读写效率高

2、KV型数据,时间复杂度为O(1),查询速度快?

?列式NoSql(代表----HBase)

?列式NoSql,大数据时代最具代表性的技术之一了,以HBase为代表。

关系行数据库数据

?列式数据库数据

?

?文档型NoSql(代表----【【微信】】)

?什么是文档型NoSql呢,文档型NoSql指的是将半结构化数据存储为文档的一种NoSql,文档型NoSql通常以JSON或者XML格式存储数据。

?

搜索型NoSql(代表----【【微信】】)?

?传统关系型数据库主要通过索引来达到快速查询的目的,但是在全文搜索的场景下,索引是无能为力的,like查询一来无法满足所有模糊匹配需求,二来使用限制太大且使用不当容易造成慢查询,搜索型 NoSql的诞生正是为了解决关系型数据库全文搜索能力较弱的问题,【【微信】】是搜索型NoSql的代 表产品。

关系型数据库和非关系型数据及其区别?

关系型数据库

关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织

?非关系型数据库

?优点:

1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。

2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘; 高扩展性;

3、成本低:nosql数据库部署简单,基本都是开源软件。

缺点:

1、不提供sql支持,学习和使用成本较高;

2、无事务处理;

3、数据结构相对复杂,复杂查询方面稍欠。?

实时学习反馈

1. 为什么使用NoSQL技术说法正确的是_____。

?A 架构安全性

B 解决数据量大,种类繁多出现性能问题

C 项目可靠性

D 项目稳定性

2. 如下针对NoSQL特点不正确的是_____。

A 易拓展

B 大数据量高性能

C 多样灵活的数据模型

D 支持事务

当下应用是S【【微信】】一起使用?

淘宝商品信息如何存放?

商品基本信息?

名称、价格、出厂信息、生产厂商,商家信息等, 关系型数据库就可以解决。

商品描述、详情、评论?

商品的图片?

分布式文件系统:

1. 淘宝自己的TFS

2. Google的GFS

3. Hadoop的HDFS

4. 阿里云的OSS?

商品关键字?

搜索引擎 【【淘密令】】 或者 ISerach

商品热门的波段信息?

内存数据库 Redis Tair Memache

发现问题?

解决问题?

UDSL统一数据服务平台

UDSL热点缓存设计?

实时学习反馈

1. 淘宝第五代架构升级解决_____问题。?

A 语言多不兼容

B 数据类型多样性重构复杂

C 平台拓展

D 用户体验

Redis是什么?

Redis是一个使用ANSIC编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库。

谁在用Redis?

实时学习反馈

1. Redis是____。?

A 分布式缓存

B 单机键值数据库

C 关系型数据库

D 高性能数据库

2. Redis采用的是_____的存储形式。

A 键值对

B 二维表

C 一维表

D 磁盘

Redis官方网址:https://redis.io/

?redis-6.2.4.tar.gz上传至CentOS并解压,解压后得到redis-6.2.4目录

解压命令:

tar -zx【【微信】】.2.4.tar.gz

安装GCC?

安装C语言编译环境

yum install -y gcc

通过使用 gcc --【【微信】】 命令打印 GCC 版本,来验证 GCC 编译器是否被成功安装:?

gcc --【【微信】】?

安装Redis?

编译Redis

在redis-6.2.4目录下执行:

make

?安装Redis

在redis-6.2.4目录下执行:

安装目录: /usr/local/bin

?服务启动

前台启动:/usr/local/bin下执行

后台启动

修改【【网址】】nf文件

启动服务

客户端启动

/usr/local/bin下执行

ping命令可以检测服务器是否正常(服务器返回PONG)

下载最新Redis镜像?

启动Redis容器?

观察Redis启动效果

查看Redis的版本?

先确保myFirstRedis容器处于Up状态。进入容器的命令行交互窗口。

Redis服务器和客户端

Redis是基于键值对存储的NoSQL数据库,其中的数据是存储在 Redis服务器里的。和传统的MySQL数据库服务器相似,一个Redis服务器可以同多个客户端创建连接。

?默认16数据库

Redis是一个字典结构的存储服务器,一个Redis实例提供了多个用来存储数据的字典,客户端可以指定 将数据存储在哪个字典中。 这与在一个关系数据库实例中可以创建多个数据库类似(如下图所示),所以可以将其中的每个字典都 理解成一个独立的数据库。

?Redis默认支持16个数据库,可以通过调整Redis的配置文件redis/【【网址】】nf中的databases来修改这一 个值,设置完毕后重启Redis便完成配置。

?Redis 使用的到底是多线程还是单线程?

因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络 带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。

IO多路复用技术

?redis 采用网络IO多路复用技术来保证在多连接的时候, 系统的高吞吐量。

大白话解释

假设你是一个机场的空管, 你需要管理到你机场的所有的航线, 包括进港,出港, 有些航班需要放到 停机坪等待,有些航班需要去登机口接乘客。

?最简单的做法,就是你去招一大批空管员,然后每人盯一架飞机, 从进港,接客,排位,出港,航线监 控,直至交接给下一个空港,全程监控。

遇到的问题:

  • 很快你就发现空管塔里面聚集起来一大票的空管员,交通稍微繁忙一点,新的空管员就已经 挤不进来了。
  • 空管员之间需要协调,屋子里面就1, 2个人的时候还好,几十号人以后 ,基本上就成菜市场 了。
  • 空管员经常需要更新一些公用的东西,比如起飞显示屏,比如下一个小时后的出港排期,最 后你会很惊奇的发现,每个人的时间最后都花在了抢这些资源上。

?怎么解决

?这个东西叫【【淘密令】】. 每一个块代表一个航班,不同的槽代表不同的状态,然后一个空管员可 以管理一组这样的块(一组航班),而他的工作,就是在航班信息有新的更新的时候,把对应的块放到 不同的槽子里面。

结论

?这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程 高效的处理多个连接请求(尽量减少网络IO的时间消耗),且Redis在内存中操作数据的速度非常快(内 存内的操作不会成为这里的性能瓶颈),主要以上两点造就了Redis具有很高的吞吐量。

切换数据库

语法结构:

示例:

清空当前库

Redis Flushdb 命令用于清空当前数据库中的所有 key。

语法结构:

示例:

通杀全部库

Redis Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。

语法结构:

示例:

意大利的一位广告女郎名字叫Merz全名Alessia Merz。

?实时学习反馈

1. Redis采用____模型。

A 阻塞IO

B 异步非阻塞IO

C 同步非阻塞IO

D 多路I/O复用

2.Redis默认_____数据库。

A 10

B 15

C 16?

D 20

查看当前库中所有的key 。

语法结构:

?示例:

注意:

生产已经禁止。因为长时间阻塞redis而导致其他客户端的命令请求一直处于阻塞状态。 更安全的 做法是采用scan。

?新版本也进行了替代:

判断某个key是否存在,返回1表示存在,0不存在。

语法结构:

示例:

查看当前key 所储存的值的类型。返回当前key所储存的值的类型,如string 、list等。

语法结构:

示例:

删除已存在的key,不存在的 key 会被忽略。

语法结构:..互帮互助的平台,互帮互助的平台,天猫助力一天能助力几次2023版,这个天猫618 狂欢节 618 天猫互助群怎么加是一个2023年天猫618 狂欢盛典的社群,我们互相帮助、共同实现目标。加入我们吧!