目录
声明:Redis的相关知识是面试的一大热门知识点,同时也是一个庞大的体系,所涉及的知识点非常多,如果用一篇文章罗列,往往会陷入知识海洋中无法感知其全貌,因此,这段时间我会试着拆分Redis的相关章节,辅以思维导图的形式介绍Redis的相关知识点,知识点范围包括如下几部分
今天主要介绍的是Redis基本概念和特点。
最本质的,Redis是一个数据库,作为一个数据库,它和其他数据库自然不会完全相同,如下是它的一些本质特性:
key-value
键值对存储:键、值都有丰富的数据类型支持Redis技术之所以被广泛使用,是因为它具有很多优点,如下所示:
访问速度快
支持丰富的数据类型
Redis基于键值对完成数据存储,那么对于键key
、值value
都有相对应的数据类型支持,如下所示:
键key
:只能是字符串类型
值value
:可支持丰富的数据类型,如下所示:
五大基础数据类型
字符串(String):最基础的数据类型,可以是字符串、整数、浮点数、二进制数据。
列表(List):存储有序元素
哈希表(Hash):存储键值对集合,也就是整体Redis存储可实现键值对嵌套,从而提高数据存储的灵活性。
集合(Set):无序、不可重复的元素。
有序集合(Sorted Set):可给每个元素设置权重,作为排序依据,同样不可出现重复元素,但是可以有顺序。
高级数据类型(了解即可)
单线程
key
等,但是这些操作都是在后台线程中完成,不会影响主线程的访问速度。非阻塞I/O多路复用
多路复用
,指的正是上文中Redis6.0使用多线程处理读写操作的技术部分。select
、poll
、epoll
.具体可参考此篇博客:【后端面经-Java】I/O多路复用 简录支持持久化、分布式系统、事务、主从复制(集群)
任何一个技术都不会是完美的,有优点就必然也存在缺点。——鲁迅(:“我没说过”)
Redis的缺点如下所示
瓶颈问题:内存和网络带宽
不具备自动容错/恢复的能力
在线扩容难度高
Redis是Web应用的常用中间件,它的应用场景非常广泛,如下所示:
缓存
Redis作为客户端和服务器数据库之间的缓存数据,可以有效减少数据库的访问压力,提高访问速度。
结构图如下所示:
分布式锁
简单消息队列
网络流量管理
计数器
排行榜
社交网络
Q:Redis、内存、磁盘的区别,为什么快为什么慢?
A:Redis是内存数据库,内存是计算机中最快的存储介质,磁盘是最慢的存储介质。Redis快速是因为它将数据存于内存之后,而内存访问可以直接传输到CPU中,磁盘访问则需要通过IO操作先将数据写入内存空间之后然后再传入CPU中。
Q:Redis的数据库类型、存储结构如何?如何实现排行榜功能
A:Redis属于NoSQL数据库,它的存储结构是键值对,其中键的数据类型只支持字符串,而值可以支持丰富的数据类型,包括列表、有序集合、集合、哈希表、字符串等等,通过列表、有序集合等数据结构实现排行榜功能。
Q:Redis是单线程还是单进程?哪些模块是单线程?
A:Redis执行指令的相关模块是单线程,6.0之后,关于网络IO的处理则转为多线程,使用非阻塞IO多路复用提高IO效率
手机扫一扫
移动阅读更方便
你可能感兴趣的文章