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

相关推荐
时间静止不是简史13 小时前
生产事故排查:Redis 宕机导致补偿队列消费线程死亡,通话录音未上送业务平台
java·redis
2301_322414280416 小时前
基于SpringBoot+Vue的休闲零食超市管理系统的设计与实现59004-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·redis·mysql·决策树·推荐算法
catoop19 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
Web极客码19 小时前
我用 Claude 分析 Redis 哨兵日志,实现跨机房数据不一致自动对齐
数据库·redis·php
库库的数据库笔记19 小时前
国产信创数据库的MySQL兼容性深度对比解析
大数据·数据库·mysql·oceanbase·政务
microrain20 小时前
SagooIoT 的缓存换后端只改一行配置,文件后端连 Redis 都不需要
物联网·缓存·golang·sagooiot
姚远Oracle ACE20 小时前
为什么无法连接到 PostgreSQL?
数据库·postgresql
ss27320 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 22 PostgreSQL实例与集群
数据库·笔记·postgresql
ss27320 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 21 PostgreSQL进程与内存架构介绍
数据库·笔记·postgresql