目录
Redis简介
Redis在内存中存储数据
Redis数据库中的应用
Redis缓存中的应用
Redis消息中间件
尾言
Redis简介
如下是Redis官网中,对Redis的一段描述
在这段描述中,我们提取如下关键要点:
基于上述要点,我们接下来初步认识一下Redis
Redis在内存中存储数据
提起这个问题,可能会很奇怪,所谓的在内存中存储数据,难道不可以定义变量吗?定义变量不就是在内存中存储数据吗?
实际上,Redis在内存中存储数据主要应用于分布式系统中
若是单机情况下,我们在语言中通过定义变量的方式是一种更优的选择
回忆一下:我们说进程之间是具有隔离性的,即一个进程想直接访问另一个进程的内存和数据是不可能的,但分布式系统中就一定要求了一个进程能访问另一个进程的内存数据。
为了解决进程的隔离性带来的问题,我们引入了进程间通信的技术
而在当今互联网中,最常用于进程间通信的技术是网络
所以Redis的功能之一就是基于网络实现分布式系统下的进程间通信的技术
Redis数据库中的应用
Redis可以应用于数据库领域,我们应该知道,数据库如今最广泛使用的是MySQL,那么Redis与他相比有哪些优势,又有哪些劣势呢?
Redis vs MySQL : 优势
Redis与MySQL相比,最大的优势就是快!
我们都知道MySQL是把数据存储到硬盘上的,而Redis是把数据存储在内存中的,根据冯诺依曼体系结构我们知道,访问内存中的数据一定比访问外设上的数据要快的多!
Redis vs MySQL : 劣势
在当今的互联网公司中,虽然有很大一部分对于访问数据的效率要求比较高,但更大一部分的互联网公司对数据访问要求没那么高,Redis把数据存储到内存的方式,虽然提高了访问效率,但同时也带来了内存存储的另一个弊端:存储空间大小有限
对于同样多的一组数据,存储到内存上所需要的成本肯定是比存储到硬盘中要大的。这会导致成本的提高
总的来说若对于数据访问效率没有那么高,并且想控制成本,可以使用MySQL,但若对于数据访问效率有较高的要求,那么就要用到Redis了
Redis缓存中的应用
在上述Redis作为数据库中我们了解到,若需要访问效率较高, 使用Redis。但带来的是存储成本的增加。
有没有一种方案是既可以节省成本(内存空间),又可以提高访问效率的呢?
这就不得不提到计算机中的二八原则!
二八原则:在当今互联网中,百分之20的热点数据,已经可以满足用户百分之80的使用需求了
我们依据这个原则,可以把百分之20的热点数据存储到内存中,剩余的存量数据存储到硬盘中即可,需要的时候再拿
这样就会使得我们设计出来的系统即拥有较高的访问速度,需要的内存空间是较少的。
在这种方案中,Redis就是作为一个缓存的角色存在
但与此同时,这种设计方案也带来了如下问题:
- 系统的复杂程度大大提升了
- 如果数据发生修改,还涉及到Redis和MySQL之间的数据同步问题
Redis消息中间件
Redis作为消息中间件(消息队列)是Redis被制造出来的初心,但后来由于经过大量实践,发现Redis作为缓存/数据库的使用会比作为消息中间件更有用
消息中间件:分布式系统下的生产者消费者模型
一般我们不会使用Redis作为消息中间件,因为业界有着比Redis更优秀的消息中间件使用!
尾言
通过上述的介绍,我们初步了解了Redis与它的使用场景,可以发现,在上述介绍中充斥着大量的分布式系统概念,所以下一期我们一起来了解一下什么是分布式!