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

相关推荐
摩羯座-185690305946 小时前
爬坑 10 年!京东店铺全量商品接口实战开发:从分页优化、SKU 关联到数据完整性闭环
linux·网络·数据库·windows·爬虫·python
编程充电站pro7 小时前
SQL 面试高频:INNER JOIN vs LEFT JOIN 怎么考?
数据库·sql
这周也會开心7 小时前
SQL-窗口函数做题总结
数据库·sql
间彧7 小时前
TiDB详解与Spring Boot实战指南
数据库
极限实验室7 小时前
Easysearch 字段'隐身'之谜:source_reuse 与 ignore_above 的陷阱解析
数据库·redis
2301_772093568 小时前
tuchuang_后端_前端_注册登录
数据库·后端·网络协议·mysql·wireshark
武子康8 小时前
Java-141 深入浅出 MySQL Spring事务失效的常见场景与解决方案详解(3)
java·数据库·mysql·spring·性能优化·系统架构·事务
间彧8 小时前
脏读、不可重复读、幻读详解与对比
数据库
间彧8 小时前
数据库事务隔离级别详解
数据库
朝九晚五ฺ8 小时前
【Redis学习】Redis常用数据类型的万字详解
redis·学习·哈希算法