说明
本文适合刚刚学习Java的初学者,也可以当成阿岩~的随手笔记.接下来就请道友们和我一起来学习吧!
如果本文有写的不对的地方,请道友们一定要说出来,避免影响到刚刚学习Java的道友们,也让阿岩~进行更新于改进,在这里谢谢各位道友了!
前言
在我们进行后端开发时或者面试时会被经常问道一些关于Redis的问题,比如为什么使用Redis,Redis为什么快以及Redis的I/O多路复用
阿岩~这几天会分为几个章节去讲解一下,道友们跟我一起来学习吧~
概述
简单来说Redis就是一个全开源免费并且强大的非关系行数据库,主要用于热点数据,首页数据等多用户经常被访问的数据中.
为什么要用Redis
1.Redis经过多年发展,现在技术已经非常成熟和稳定,而且运用的时候也比较便捷.
2.对与一些热门数据,如果用户进行大量访问,如果我们没有Redis进行一个数据回应,那么所有的访问压力就会全部抵达我们的数据库.当达到一定阈值的时候,很有可能将我们的服务器压垮,造成损失.但是加入Redis时就会很大程度的避免这个问题发生.因为Redis能够很快的进行一个数据回应.
Redis的基础是什么
五种数据类型:
字符串(String) 最基本的数据类型,可以存储字符串、整数或浮点数,支持自增自减操作。
哈希(Hash) 由多个键值对组成的数据集合,适合存储对象。
列表(List) 一个有序的字符串列表,可以在列表两端插入或删除元素,支持基本的列表操作,如切片、插入和删除。
集合(Set) 由多个不重复的字符串组成的无序集合,支持求交集、并集、差集等基本操作。
有序集合(Sorted Set) 类似于集合,不同之处在于每个元素都有一个分数,支持根据分数范围获取元素,以及按分数排序的操作。
备注:
这并不是Redis所有的数据类型,只是我们比较常用到的数据类型(面试回答这五种就行)
Redis为什么那么快
1: 基于内存实现: Redis是基于内存实现的,不会像磁盘数据库一样需要将内容从磁盘读取到内存,所以不会受到磁盘I/O的限制.
2: 因为运用的是单线程,所以省去了很多上下文切换时间以及cpu的消耗.因为单线程不会考虑到线程的竞争,或者加锁以及死锁的问题导致性能消耗
3:使用I/O多路复用模型,非阻塞IO
(Redis是纯内存操作的,执行速度非常快,它的性能瓶颈是网络延迟而不是执行速度,I/O多路复用模型主要就是实现了高效的网络请求)
对比
当不同的客户端进行请求在Redis中有的数据时,会经过I/O多路复用和事件派发的模式进行回应.达到一个增加效率的过程
当不同的客户端进行请求没有Redis中有的数据时,请求会直接抵达数据库,在数据磁盘上进行查询,在此期间会受到磁盘I/O的限制,同时如果是多客户端访问时,会经过多线程争抢的过程,导致浪费效率
备注:
I/O多路复用+事件派发,以及Redis的各种模式,我会在之后的几篇中写道,道友们跟随阿岩~一起来学习吧!
------阿岩~的随手笔记
阿岩~有话说:
因为工作原因,断更了很长一段事件,在这里跟大家说句抱歉了!让我们一起好好学习吧,加油!