最近刚录制完redis入门教程,目前第一阶段的教程已经录制完毕。
我们所看到的所有网站,除纯静态网站外,基本上都是用到了数据库,比如MySQL、Oracle、SQLServer、PostgreSQL等,这些都是关系型数据库,所谓的关系型数据库,用一句人话来讲就是“具有关系模型的数据库”,关键就在于这个“关系模型”。关系模型咱也用一句人话来解释就是类似”一对一“、”一对多“、”多对多“的模型。
这下你就能明白了吧,举个栗子:
以我们网络技术联盟站网站的用户管理来举例
直观上看,每个用户属于一个网站,并且这个用户是唯一的,这个模型就是一对一;每个用户可以发布多篇文章、多个评论、点多个赞,这个就是一对多;多篇文章可以对应多个评论、多个赞,这个就是多对多。
这种情况用关系型数据库就非常合适,而且非常易于管理。
这个是关系型数据库的简单介绍。
非关系型数据库是与关系型数据库相对的数据库,每个对象直接没有直接的关系,当然并不是不能发生关系,只是说非关系型数据库不是为了其关系特制的。
非关系型数据库又称”NOSQL“,英文全称就是Not Only SQL
,翻译成中文就是”不仅仅数据库“的意思。这种数据库每条记录就是一个对象,一般可以存文档、图片等。
那么redis就属于非关系型数据库中的键值数据库,键值数据库就是key-value。
redis的英文全称是”Remote Dictionary Server“,翻译成中文就是远程目录服务,一般也不会去翻译哈。
redis在大多数程序员口中又被称为”内存数据库“,这个是因为redis的数据不是存在硬盘中的,而是存在内存中的,既然存在内存中,那么对于计算机底层结构了解的朋友都知道,内存的速度在宏观上仅次于CPU(说是宏观上,因为在cpu和内存之间还有一级缓存、二级缓存等),所以速度极快,那么非常使用用作缓存。
我还是用一句人话来解释吧。
还是以我们网络技术联盟站为例:
每天那么多人在访问网站,每次访问都会有读写操作,读写操作意思呢说白了,你看一篇文章就是读操作,写一篇文章就是写操作。用户量少还可以,假如网站到了10万级用户了,我的系统还能这样涉及吗?
现在我的系统架构大体是以上所示,用户在访问网站的时候,网站直接去数据库中拿取相关数据。但是假如真的到了10万级的时候,还这样涉及的话,网站100%要崩,或者用大家的话说”网站又炸了“。
这个时候,redis就可以派上用场了:
如图所示,面对10万级的访问的时候,网站架构可以变成这样了,有人会疑问了,既然有redis了,为啥网站还要跟数据库交互,这个问题其实非常好!
缓存的目的不是为了取代数据库,最终目的肯定是加快网站的访问速度,一般我们肯定将无状态的或者说不必要入库的数据放在redis中,有些关键性的数据还是要入库查库的,具体问题具体业务还要看实际情况。
再问大家一个问题:
Redis作为内存数据库,如果服务器崩溃或者关机重启的时候,redis中的数据不就没了吗,这个时候redis的弊端不就是非常大吗?
那么,redis另一个骚操作就来了:
在讲Redis持久化机制前,我来简单说一下什么是持久化。
用一句人话来讲就是:找个实体盒子把数据装起来。
也就是以某种手段永久保存在某个地方。
持久化方式:
数据入库其实就是数据持久化,在java开发中,有一层叫做持久层,持久层就是跟数据库对接的层。
redis采用的硬盘持久化,Redis 有两个持久化:
这两种方式都可以进行持久化,各有优缺点,在新版的redis中,持久化机制已经将这两种方案融合,更加强大。
这里我不做展开,等后面有时间我会在redis进阶中好好跟大家讨论一下redis的持久化机制。
那么回归本文所要探讨的内容,我将redis入门教程分为以下几个方面:
基本上这些足够一个新手入门redis了。
那么我的B站上面已经上传了相关视频的合集了,大家平时用这个平台的话也可以上去看。