【Redis】初识Redis

目录

Redis简介

Redis在内存中存储数据

Redis数据库中的应用

Redis缓存中的应用

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与它的使用场景,可以发现,在上述介绍中充斥着大量的分布式系统概念,所以下一期我们一起来了解一下什么是分布式!

相关推荐
workflower34 分钟前
FDD(Feature Driven Development)特征驱动开发
大数据·数据库·驱动开发·需求分析·个人开发
明月与玄武43 分钟前
前端缓存战争:回车与刷新按钮的终极对决!
前端·缓存·回车 vs 点击刷新
韩立学长1 小时前
基于Springboot的旧物公益捐赠管理系统3726v22v(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
JH30732 小时前
《Redis 经典应用场景(一):缓存、分布式锁与限流》
redis·分布式·缓存
苦学编程的谢2 小时前
Redis_4_常见命令(完)+认识数据类型和编码方式
数据库·redis·缓存
小坏讲微服务2 小时前
五分钟使用 Docker-compose搭建 Redis 8.0 中间件
运维·redis·docker·中间件·容器·kubernetes·k8s
小光学长2 小时前
基于Vue的儿童手工创意店管理系统as8celp7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
小光学长2 小时前
基于Vue的地铁综合服务管理系统7949eg04(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
Yeats_Liao2 小时前
时序数据库系列(二):InfluxDB安装配置从零搭建
数据库·后端·时序数据库